Skip to content

Commit 7af1c6f

Browse files
committed
Minor code changes
1 parent 713aa5d commit 7af1c6f

File tree

10 files changed

+25
-20
lines changed

10 files changed

+25
-20
lines changed

NeuralNetwork.NET/APIs/Structs/Tensor.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,18 @@ public int Size
4444
/// <summary>
4545
/// Gets whether or not the current instance is linked to an allocated memory area
4646
/// </summary>
47-
public bool Null
47+
public bool IsNull
4848
{
4949
[Pure]
5050
[MethodImpl(MethodImplOptions.AggressiveInlining)]
5151
get => Ptr == IntPtr.Zero;
5252
}
5353

54+
/// <summary>
55+
/// Gets a null instance
56+
/// </summary>
57+
public static readonly Tensor Null = new Tensor(IntPtr.Zero, 0, 0);
58+
5459
#region Initialization
5560

5661
// Private constructor

NeuralNetwork.NET/Networks/Implementations/NeuralNetwork.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ internal unsafe void Backpropagate(in TrainingBatch batch, float dropout, [NotNu
252252
* Multiply the previous delta with the transposed weights of the following layer
253253
* Compute d(l), the Hadamard product of z'(l) and delta(l + 1) * W(l + 1)T */
254254
_Layers[l + 1].Backpropagate(*deltas[l + 1], zList[l], _Layers[l].ActivationFunctions.ActivationPrime);
255-
if (!dropoutMasks[l].Null) zList[l].InPlaceHadamardProduct(dropoutMasks[l]);
255+
if (!dropoutMasks[l].IsNull) zList[l].InPlaceHadamardProduct(dropoutMasks[l]);
256256
deltas[l] = zList + l;
257257
}
258258

NeuralNetwork.NET/Networks/Layers/Abstract/NetworkLayerBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ protected NetworkLayerBase(in TensorInfo input, in TensorInfo output, Activation
7575
/// <summary>
7676
/// Backpropagates the error to compute the delta for the inputs of the layer
7777
/// </summary>
78-
/// <param name="delta_1">The output error delta</param>
78+
/// <param name="dy">The output error delta</param>
7979
/// <param name="z">The activity on the inputs of the layer. It will be modified to become the computed delta</param>
8080
/// <param name="activationPrime">The activation prime function performed by the previous layer</param>
81-
public abstract void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime);
81+
public abstract void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime);
8282

8383
#region Equality check
8484

NeuralNetwork.NET/Networks/Layers/Cpu/ConvolutionalLayer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ public override unsafe void Forward(in Tensor x, out Tensor z, out Tensor a)
9090
}
9191

9292
/// <inheritdoc/>
93-
public override unsafe void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
93+
public override unsafe void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
9494
{
9595
fixed (float* pw = Weights)
9696
{
9797
Tensor.Reshape(pw, OutputInfo.Channels, KernelInfo.Size, out Tensor wTensor);
9898
wTensor.Rotate180(KernelInfo.Channels, out Tensor w180);
99-
delta_1.ConvoluteBackwards(OutputInfo, w180, KernelInfo, out Tensor delta);
99+
dy.ConvoluteBackwards(OutputInfo, w180, KernelInfo, out Tensor delta);
100100
w180.Free();
101101
z.InPlaceActivationAndHadamardProduct(delta, activationPrime);
102102
delta.Free();

NeuralNetwork.NET/Networks/Layers/Cpu/FullyConnectedLayer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ public override unsafe void Forward(in Tensor x, out Tensor z, out Tensor a)
4444
}
4545

4646
/// <inheritdoc/>
47-
public override unsafe void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
47+
public override unsafe void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
4848
{
4949
fixed (float* pw = Weights)
5050
{
5151
Tensor.Reshape(pw, InputInfo.Size, OutputInfo.Size, out Tensor wTensor);
5252
wTensor.Transpose(out Tensor wt);
53-
z.InPlaceMultiplyAndHadamardProductWithActivationPrime(delta_1, wt, activationPrime);
53+
z.InPlaceMultiplyAndHadamardProductWithActivationPrime(dy, wt, activationPrime);
5454
wt.Free();
5555
}
5656
}

NeuralNetwork.NET/Networks/Layers/Cpu/PoolingLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public override void Forward(in Tensor x, out Tensor z, out Tensor a)
4545
}
4646

4747
/// <inheritdoc/>
48-
public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime) => z.UpscalePool2x2(delta_1, InputInfo.Channels);
48+
public override void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime) => z.UpscalePool2x2(dy, InputInfo.Channels);
4949

5050
/// <inheritdoc/>
5151
public override INetworkLayer Clone() => new PoolingLayer(InputInfo, OperationInfo, ActivationFunctionType);

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnConvolutionalLayer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,15 @@ public override void Forward(in Tensor x, out Tensor z, out Tensor a)
108108
}
109109

110110
/// <inheritdoc/>
111-
public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
111+
public override void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
112112
{
113113
using (DeviceMemory<float> delta_gpu = DnnInstance.Gpu.AllocateDevice<float>(z.Size))
114114
{
115115
// Convolution
116116
DnnInstance.GetConvolutionBackwardDataAlgorithm(FilterDescription, OutputDescription, ConvolutionDescription, InputDescription, ConvolutionBwdDataPreference.PREFER_FASTEST, IntPtr.Zero, out ConvolutionBwdDataAlgo algorithm);
117117
DnnInstance.GetConvolutionBackwardDataWorkspaceSize(FilterDescription, OutputDescription, ConvolutionDescription, InputDescription, algorithm, out IntPtr size);
118118
using (DeviceMemory<float>
119-
delta_1_gpu = DnnInstance.Gpu.AllocateDevice(delta_1),
119+
delta_1_gpu = DnnInstance.Gpu.AllocateDevice(dy),
120120
w_gpu = DnnInstance.Gpu.AllocateDevice(Weights))
121121
using (DeviceMemory<byte> workspace_gpu = DnnInstance.Gpu.AllocateDevice<byte>(size))
122122
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnFullyConnectedLayer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ public override void Forward(in Tensor x, out Tensor z, out Tensor a)
4545
}
4646

4747
/// <inheritdoc/>
48-
public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
48+
public override void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
4949
{
5050
using (DeviceMemory<float>
51-
delta_1_gpu = DnnInstance.Gpu.AllocateDevice(delta_1),
51+
delta_1_gpu = DnnInstance.Gpu.AllocateDevice(dy),
5252
w_gpu = DnnInstance.Gpu.AllocateDevice(Weights),
5353
z_gpu = DnnInstance.Gpu.AllocateDevice(z))
5454
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnInceptionLayer.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ public override void Forward(in Tensor x, out Tensor z, out Tensor a)
443443
}
444444

445445
/// <inheritdoc/>
446-
public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
446+
public override void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
447447
{
448448
using (DeviceMemory<float>
449449
dx_gpu = DnnInstance.Gpu.AllocateDevice<float>(z.Size),
@@ -452,7 +452,7 @@ public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFun
452452
// First 1x1 convolution
453453
DnnInstance.GetConvolutionBackwardDataAlgorithm(_1x1FilterDescription, _1x1OutputDescription, _1x1ConvolutionDescription, InputDescription, ConvolutionBwdDataPreference.PREFER_FASTEST, IntPtr.Zero, out ConvolutionBwdDataAlgo algorithm);
454454
DnnInstance.GetConvolutionBackwardDataWorkspaceSize(_1x1FilterDescription, _1x1OutputDescription, _1x1ConvolutionDescription, InputDescription, algorithm, out IntPtr size);
455-
using (DeviceMemory<float> dy_gpu = DnnInstance.Gpu.AllocateDevice(delta_1, 0, InputInfo.SliceSize * OperationInfo.Primary1x1ConvolutionKernels))
455+
using (DeviceMemory<float> dy_gpu = DnnInstance.Gpu.AllocateDevice(dy, 0, InputInfo.SliceSize * OperationInfo.Primary1x1ConvolutionKernels))
456456
using (DeviceMemory<byte> workspace_gpu = DnnInstance.Gpu.AllocateDevice<byte>(size))
457457
{
458458
DnnInstance.ConvolutionBackwardData(1, _1x1FilterDescription, w_gpu.Ptr, _1x1OutputDescription, dy_gpu.Ptr, _1x1ConvolutionDescription, algorithm, workspace_gpu.Ptr, size, 0, InputDescription, dx_gpu.Ptr);
@@ -465,7 +465,7 @@ public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFun
465465
DnnInstance.GetConvolutionBackwardDataAlgorithm(_3x3FilterDescription, _3x3OutputDescription, _3x3ConvolutionDescription, _3x3Reduce1x1OutputDescription, ConvolutionBwdDataPreference.PREFER_FASTEST, IntPtr.Zero, out algorithm);
466466
DnnInstance.GetConvolutionBackwardDataWorkspaceSize(_3x3FilterDescription, _3x3OutputDescription, _3x3ConvolutionDescription, _3x3Reduce1x1OutputDescription, algorithm, out size);
467467
using (DeviceMemory<float>
468-
dy_gpu = DnnInstance.Gpu.AllocateDevice(delta_1, InputInfo.SliceSize * OperationInfo.Primary1x1ConvolutionKernels, InputInfo.SliceSize * OperationInfo.Secondary3x3ConvolutionKernels),
468+
dy_gpu = DnnInstance.Gpu.AllocateDevice(dy, InputInfo.SliceSize * OperationInfo.Primary1x1ConvolutionKernels, InputInfo.SliceSize * OperationInfo.Secondary3x3ConvolutionKernels),
469469
_3x3Reduce1x1dx_gpu = DnnInstance.Gpu.AllocateDevice<float>(_3x3Reduce1x1Z.Size))
470470
using (DeviceMemory<byte> workspace_gpu = DnnInstance.Gpu.AllocateDevice<byte>(size))
471471
{
@@ -493,7 +493,7 @@ public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFun
493493
DnnInstance.GetConvolutionBackwardDataAlgorithm(_5x5FilterDescription, _5x5OutputDescription, _5x5ConvolutionDescription, _5x5Reduce1x1OutputDescription, ConvolutionBwdDataPreference.PREFER_FASTEST, IntPtr.Zero, out algorithm);
494494
DnnInstance.GetConvolutionBackwardDataWorkspaceSize(_5x5FilterDescription, _5x5OutputDescription, _5x5ConvolutionDescription, _5x5Reduce1x1OutputDescription, algorithm, out size);
495495
using (DeviceMemory<float>
496-
dy_gpu = DnnInstance.Gpu.AllocateDevice(delta_1, InputInfo.SliceSize * (OperationInfo.Primary1x1ConvolutionKernels + OperationInfo.Secondary3x3ConvolutionKernels), InputInfo.SliceSize * OperationInfo.Secondary5x5ConvolutionKernels),
496+
dy_gpu = DnnInstance.Gpu.AllocateDevice(dy, InputInfo.SliceSize * (OperationInfo.Primary1x1ConvolutionKernels + OperationInfo.Secondary3x3ConvolutionKernels), InputInfo.SliceSize * OperationInfo.Secondary5x5ConvolutionKernels),
497497
_5x5Reduce1x1dx_gpu = DnnInstance.Gpu.AllocateDevice<float>(_5x5Reduce1x1Z.Size))
498498
using (DeviceMemory<byte> workspace_gpu = DnnInstance.Gpu.AllocateDevice<byte>(size))
499499
{
@@ -521,7 +521,7 @@ public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFun
521521
DnnInstance.GetConvolutionBackwardDataAlgorithm(Secondary1x1FilterDescription, Secondary1x1OutputDescription, _1x1ConvolutionDescription, PoolingOutputDescription, ConvolutionBwdDataPreference.PREFER_FASTEST, IntPtr.Zero, out algorithm);
522522
DnnInstance.GetConvolutionBackwardDataWorkspaceSize(Secondary1x1FilterDescription, Secondary1x1OutputDescription, _1x1ConvolutionDescription, PoolingOutputDescription, algorithm, out size);
523523
using (DeviceMemory<float>
524-
dy_gpu = DnnInstance.Gpu.AllocateDevice(delta_1, InputInfo.SliceSize * (OperationInfo.Primary1x1ConvolutionKernels + OperationInfo.Secondary3x3ConvolutionKernels + OperationInfo.Secondary5x5ConvolutionKernels), InputInfo.SliceSize * OperationInfo.Secondary1x1AfterPoolingConvolutionKernels),
524+
dy_gpu = DnnInstance.Gpu.AllocateDevice(dy, InputInfo.SliceSize * (OperationInfo.Primary1x1ConvolutionKernels + OperationInfo.Secondary3x3ConvolutionKernels + OperationInfo.Secondary5x5ConvolutionKernels), InputInfo.SliceSize * OperationInfo.Secondary1x1AfterPoolingConvolutionKernels),
525525
poolDx_gpu = DnnInstance.Gpu.AllocateDevice<float>(_PoolingZ.Size))
526526
using (DeviceMemory<byte> workspace_gpu = DnnInstance.Gpu.AllocateDevice<byte>(size))
527527
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnPoolingLayer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@ public override void Forward(in Tensor x, out Tensor z, out Tensor a)
8080
}
8181

8282
/// <inheritdoc/>
83-
public override void Backpropagate(in Tensor delta_1, in Tensor z, ActivationFunction activationPrime)
83+
public override void Backpropagate(in Tensor dy, in Tensor z, ActivationFunction activationPrime)
8484
{
8585
using (DeviceMemory<float> dx_gpu = DnnInstance.Gpu.AllocateDevice<float>(z.Size))
8686
{
8787
using (DeviceMemory<float>
8888
x_gpu = DnnInstance.Gpu.AllocateDevice(_X),
8989
y_gpu = DnnInstance.Gpu.AllocateDevice(_Z),
90-
dy_gpu = DnnInstance.Gpu.AllocateDevice(delta_1))
90+
dy_gpu = DnnInstance.Gpu.AllocateDevice(dy))
9191
{
9292
DnnInstance.PoolingBackward(PoolingDescription, 1, OutputDescription, y_gpu.Ptr, OutputDescription, dy_gpu.Ptr, InputDescription, x_gpu.Ptr, 0, InputDescription, dx_gpu.Ptr);
9393
}

0 commit comments

Comments
 (0)