public ConvolutionLayer(ActivationType activationType, int neuronsCount, int kernelSize = 3, bool useReferences = false) { ActivationFunctionType = activationType; _function = activationType.Get(); KernelSize = kernelSize; Neurons = new ConvolutionNeuron[neuronsCount]; Outputs = new Matrix[neuronsCount]; UseReferences = useReferences; }
public void Init(int inputWidth, int inputHeight, int?outsPerNeuron) { OutputWidht = inputWidth - KernelSize + 1; OutputHeight = inputHeight - KernelSize + 1; for (var i = 0; i < NeuronsCount; i++) { int?parentNeuron = null; if (UseReferences) { parentNeuron = outsPerNeuron.HasValue && outsPerNeuron.Value > 0 ? i / outsPerNeuron : 0; } Neurons[i] = new ConvolutionNeuron(_function, inputWidth, inputHeight, KernelSize, parentNeuron); } }