void InitFunc(StreamingContext sc) { switch (this) { case MaskedLinear <float> linearF: linearF.SingleInputForward = x => LinearF.SingleInputForward(x, linearF.Weight * linearF.Mask, linearF.Bias, linearF.Activation, linearF); linearF.SingleOutputBackward = (y, x) => LinearF.SingleOutputBackward(y, x, linearF.Weight, linearF.Bias, linearF.Activation); break; case MaskedLinear <double> linearD: linearD.SingleInputForward = x => LinearD.SingleInputForward(x, linearD.Weight * linearD.Mask, linearD.Bias, linearD.Activation, linearD); linearD.SingleOutputBackward = (y, x) => LinearD.SingleOutputBackward(y, x, linearD.Weight, linearD.Bias, linearD.Activation); break; } }
public void InitFunc(StreamingContext sc) { if (IsParallel) { switch (this) { case Linear <float> linearF: linearF.SingleInputForward = x => LinearF.SingleInputForward(x, linearF.Weight, linearF.Bias, linearF.ForwardKernel, linearF); linearF.SingleOutputBackward = (y, x) => LinearF.SingleOutputBackward(y, x, linearF.Weight, linearF.Bias, linearF.BackwardgWKernel, linearF.BackwardgXKernel, linearF.Activation); break; case Linear <double> linearD: linearD.SingleInputForward = x => LinearD.SingleInputForward(x, linearD.Weight, linearD.Bias, linearD.ForwardKernel, linearD); linearD.SingleOutputBackward = (y, x) => LinearD.SingleOutputBackward(y, x, linearD.Weight, linearD.Bias, linearD.BackwardgWKernel, linearD.BackwardgXKernel, linearD.Activation); break; } } }