public unsafe void Eval(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { float *x = ((float *)input.DataPointer); float *y = ((float *)output.DataPointer); var sumExp = 0.0f; int i; for (i = 0; i < neurons; i++) { y[i] = (float)Math.Exp(x[i]); sumExp += y[i]; } for (i = 0; i < neurons; i++) { y[i] /= sumExp; } }
public void EvalDerivate(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { throw new NotImplementedException(); }
public unsafe void EvalDerivate(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { float *x = (float *)input.DataPointer; float *y = (float *)output.DataPointer; Parallel.For(0, neurons, neuron => { y[neuron] = x[neuron] * (1 - x[neuron]); }); }
public unsafe void Eval(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { float *x = (float *)input.DataPointer; float *y = (float *)output.DataPointer; Parallel.For(0, neurons, i => { y[i] = 1.0f / (1 + (float)Math.Exp(-x[i])); }); }
public unsafe void EvalDerivate(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { for (int neuron = 0; neuron < neurons; neuron++) { float x = ((float *)input.DataPointer)[neuron]; ((float *)output.DataPointer)[neuron] = x * (1 - x); } }
public unsafe void Eval(ComputeBuffer input, ComputeBuffer output, int neurons, int layer, FFNNet net) { float *x = (float *)input.DataPointer; float *y = (float *)output.DataPointer; for (int i = 0; i < neurons; i++) { y[i] = 1.0f / (1 + (float)Math.Exp(-x[i])); } }
public FFNNBackPropCPUTrainer(IFFNNetEvaluator evaluator) { this.net = evaluator.NeuralNet; }