Added a semantic function where the injected "knowledge" is just random
garbage. This function was written to isolate the "knowledge" component
of the other semantic functions, basically to ensure it's the matrices
and not the rest of the process that is making the difference in
training.
There's no point having a loss function testing sandbox where the baseling trains perfectly in 2 epochs. I've DEoptimised the training in this commit to ensure the testing sandbox is actually useful.