public void FullyConnectedBackward() { FullyConnectedLayer cpu = new FullyConnectedLayer(TensorInfo.Linear(250), 127, ActivationType.LeCunTanh, WeightsInitializationMode.GlorotNormal, BiasInitializationMode.Gaussian), gpu = new CuDnnFullyConnectedLayer(cpu.InputInfo, cpu.OutputInfo.Size, cpu.Weights, cpu.Biases, cpu.ActivationType); TestBackward(cpu, gpu, 400); }
public void FullyConnectedForward() { float[,] x = WeightsProvider.NewFullyConnectedWeights(TensorInfo.Linear(400), 250, WeightsInitializationMode.GlorotNormal).AsSpan().AsMatrix(400, 250); FullyConnectedLayer cpu = new FullyConnectedLayer(TensorInfo.Linear(250), 127, ActivationFunctionType.LeCunTanh, WeightsInitializationMode.GlorotNormal, BiasInitializationMode.Gaussian), gpu = new CuDnnFullyConnectedLayer(cpu.InputInfo, cpu.OutputInfo.Size, cpu.Weights, cpu.Biases, cpu.ActivationFunctionType); TestForward(cpu, gpu, x); }
internal static INetworkLayer CuDnnLayerDeserialize([NotNull] Stream stream, LayerType type) { switch (type) { case LayerType.FullyConnected: return(CuDnnFullyConnectedLayer.Deserialize(stream)); case LayerType.Convolutional: return(CuDnnConvolutionalLayer.Deserialize(stream)); case LayerType.Pooling: return(CuDnnPoolingLayer.Deserialize(stream)); case LayerType.Softmax: return(CuDnnSoftmaxLayer.Deserialize(stream)); case LayerType.Inception: return(CuDnnInceptionLayer.Deserialize(stream)); default: return(null); } }