public Vector output(Vector inputs) { Vector in = inputs.append(bias); this.inputs = in; in = weights.multiply(in); outputs = fcn.apply(in); return outputs; }
public Vector backProp(Vector error) { derivs = fcn.applyDerivative(outputs); errors = derivs.multiply(error); Vector blame = weights.transpose().multiply(errors); // take off the bias signal, the previous layer need not know return blame.slice(blame.dim() - 1); }
/* Combine TFs. */ public TransferFunction multiply(TransferFunction tf) { Polynomial num_result = num.multiply(tf.getNumerator()); Polynomial den_result = den.multiply(tf.getDenominator()); return new TransferFunction(num_result, den_result); }