Skip to content

Commit 91d02f5

Browse files
committed
Removed unnecessary Span<T>.Copy method
1 parent aed63f2 commit 91d02f5

10 files changed

+9
-23
lines changed

NeuralNetwork.NET/Extensions/SpanExtensions.cs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,20 +81,6 @@ public static unsafe int GetContentHashCode<T>(this Span<T> span) where T : stru
8181
}
8282
}
8383

84-
/// <summary>
85-
/// Returns a deep copy of the input <see cref="Span{T}"/>
86-
/// </summary>
87-
/// <param name="span">The <see cref="Span{T}"/> to clone</param>
88-
/// <remarks>This method avoids the boxing of the <see cref="Array.Clone"/> method, and it is faster thanks to the use of the methods in the <see cref="Buffer"/> class</remarks>
89-
[Pure]
90-
[CollectionAccess(CollectionAccessType.Read)]
91-
public static T[] Copy<T>(this Span<T> span) where T : struct
92-
{
93-
T[] result = new T[span.Length];
94-
span.CopyTo(result);
95-
return result;
96-
}
97-
9884
/// <summary>
9985
/// Extracts a single row from a given matrix
10086
/// </summary>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,6 @@ public static INetworkLayer Deserialize([NotNull] Stream stream)
107107
}
108108

109109
/// <inheritdoc/>
110-
public override INetworkLayer Clone() => new BatchNormalizationLayer(InputInfo, NormalizationMode, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), Iteration, Mu.AsSpan().Copy(), Sigma2.AsSpan().Copy(), ActivationType);
110+
public override INetworkLayer Clone() => new BatchNormalizationLayer(InputInfo, NormalizationMode, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), Iteration, Mu.AsSpan().ToArray(), Sigma2.AsSpan().ToArray(), ActivationType);
111111
}
112112
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public override bool Equals(INetworkLayer other)
129129
}
130130

131131
/// <inheritdoc/>
132-
public override INetworkLayer Clone() => new ConvolutionalLayer(InputInfo, OperationInfo, KernelInfo, OutputInfo, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), ActivationType);
132+
public override INetworkLayer Clone() => new ConvolutionalLayer(InputInfo, OperationInfo, KernelInfo, OutputInfo, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), ActivationType);
133133

134134
/// <inheritdoc/>
135135
public override void Serialize(Stream stream)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public override unsafe void Backpropagate(in Tensor x, in Tensor y, in Tensor dy
7474
#endregion
7575

7676
/// <inheritdoc/>
77-
public override INetworkLayer Clone() => new FullyConnectedLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), ActivationType);
77+
public override INetworkLayer Clone() => new FullyConnectedLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), ActivationType);
7878

7979
/// <summary>
8080
/// Tries to deserialize a new <see cref="FullyConnectedLayer"/> from the input <see cref="Stream"/>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public OutputLayer(in TensorInfo input, int outputs, [NotNull] float[] weights,
3131
: base(input, outputs, weights, biases, activation, cost) { }
3232

3333
/// <inheritdoc/>
34-
public override INetworkLayer Clone() => new OutputLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), ActivationType, CostFunctionType);
34+
public override INetworkLayer Clone() => new OutputLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), ActivationType, CostFunctionType);
3535

3636
/// <summary>
3737
/// Tries to deserialize a new <see cref="OutputLayer"/> from the input <see cref="Stream"/>

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

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

4242
/// <inheritdoc/>
43-
public override INetworkLayer Clone() => new SoftmaxLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().Copy(), Biases.AsSpan().Copy());
43+
public override INetworkLayer Clone() => new SoftmaxLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray());
4444

4545
/// <summary>
4646
/// Tries to deserialize a new <see cref="SoftmaxLayer"/> from the input <see cref="Stream"/>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public static INetworkLayer Deserialize([NotNull] System.IO.Stream stream)
167167
}
168168

169169
/// <inheritdoc/>
170-
public override INetworkLayer Clone() => new CuDnnBatchNormalizationLayer(InputInfo, NormalizationMode, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), Iteration, Mu.AsSpan().Copy(), Sigma2.AsSpan().Copy(), ActivationType);
170+
public override INetworkLayer Clone() => new CuDnnBatchNormalizationLayer(InputInfo, NormalizationMode, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), Iteration, Mu.AsSpan().ToArray(), Sigma2.AsSpan().ToArray(), ActivationType);
171171

172172
#region IDisposable
173173

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public override void Backpropagate(in Tensor x, in Tensor y, in Tensor dy, in Te
166166
}
167167

168168
/// <inheritdoc/>
169-
public override INetworkLayer Clone() => new CuDnnConvolutionalLayer(InputInfo, OperationInfo, KernelInfo, OutputInfo, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), ActivationType);
169+
public override INetworkLayer Clone() => new CuDnnConvolutionalLayer(InputInfo, OperationInfo, KernelInfo, OutputInfo, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), ActivationType);
170170

171171
#endregion
172172
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,6 @@ public override void Backpropagate(in Tensor x, in Tensor y, in Tensor dy, in Te
9595
}
9696

9797
/// <inheritdoc/>
98-
public override INetworkLayer Clone() => new CuDnnFullyConnectedLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().Copy(), Biases.AsSpan().Copy(), ActivationType);
98+
public override INetworkLayer Clone() => new CuDnnFullyConnectedLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray(), ActivationType);
9999
}
100100
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,6 @@ public override void Backpropagate(in Tensor x, in Tensor yHat, in Tensor y, in
112112
}
113113

114114
/// <inheritdoc/>
115-
public override INetworkLayer Clone() => new CuDnnSoftmaxLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().Copy(), Biases.AsSpan().Copy());
115+
public override INetworkLayer Clone() => new CuDnnSoftmaxLayer(InputInfo, OutputInfo.Size, Weights.AsSpan().ToArray(), Biases.AsSpan().ToArray());
116116
}
117117
}

0 commit comments

Comments
 (0)