Skip to content

Commit c586459

Browse files
author
Jack Dermody
committed
additional unit tests
1 parent 99167ee commit c586459

File tree

1 file changed

+58
-4
lines changed

1 file changed

+58
-4
lines changed

Diff for: UnitTests/CudaTensorTests.cs

+58-4
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,20 @@ public void TensorIm2Col2()
143143
}
144144
}
145145

146+
[TestMethod]
147+
public void TensorIm2Col3()
148+
{
149+
var normalDistribution = new Normal(0, 1);
150+
using (var cpuTensor = _cpu.Create3DTensor(Enumerable.Range(0, 2).Select(i => _cpu.CreateMatrix(8, 8, (j, k) => Convert.ToSingle(normalDistribution.Sample()))).ToList()))
151+
using (var gpuTensor = _cuda.Create3DTensor(cpuTensor.AsIndexable()))
152+
using (var cpuMatrix = cpuTensor.Im2Col(2, 2, 1))
153+
using (var gpuMatrix = gpuTensor.Im2Col(2, 2, 1)) {
154+
var cpu = cpuMatrix.AsIndexable();
155+
var gpu = gpuMatrix.AsIndexable();
156+
FloatingPointHelper.AssertEqual(cpu, gpu);
157+
}
158+
}
159+
146160
//[TestMethod]
147161
//public void TensorCalculateWeightUpdate()
148162
//{
@@ -335,7 +349,7 @@ void _TensorReverseIm2Col(int filterWidth, int filterHeight, int stride, int dep
335349
cpuFilterList.Add(cpuFilter.Column(i).Split(depth).Select(v => v.Rotate(v.Count / filterWidth)).ToList());
336350

337351
var cpuReverseIm2Col = outputTensor.ReverseIm2Col(cpuFilterList, inputHeight, inputWidth, depth, 0, filterHeight, filterWidth, stride);
338-
var cpuUpdate = cpuReverseIm2Col.ConvertTo3DTensor(inputHeight, inputWidth);
352+
//var cpuUpdate = cpuReverseIm2Col.ConvertTo3DTensor(inputHeight, inputWidth);
339353

340354
using (var gpuTensor = _cuda.Create3DTensor(outputTensor.AsIndexable())) {
341355
var gpuFilterList = cpuFilterList.Select(fl => fl.Select(f => _cuda.CreateVector(f.AsIndexable())).ToList()).ToList();
@@ -369,6 +383,18 @@ public void TensorReverseIm2Col4()
369383
_TensorReverseIm2Col(2, 2, 2, 2, 2, 4, 4);
370384
}
371385

386+
[TestMethod]
387+
public void TensorReverseIm2Col5()
388+
{
389+
_TensorReverseIm2Col(2, 2, 1, 2, 1, 4, 4);
390+
}
391+
392+
[TestMethod]
393+
public void TensorReverseIm2Col6()
394+
{
395+
_TensorReverseIm2Col(2, 2, 1, 2, 2, 4, 4);
396+
}
397+
372398
FloatMatrix _CreateMatrix(int depth, int rows, int columns, Func<int, int, int, float> valueProvider)
373399
{
374400
return new FloatMatrix {
@@ -440,6 +466,18 @@ public void TensorCombineDepthSlices()
440466
FloatingPointHelper.AssertEqual(cpuCombined.AsIndexable(), gpuCombined.AsIndexable());
441467
}
442468

469+
[TestMethod]
470+
public void TensorCombineDepthSlices2()
471+
{
472+
var tensor = _CreateTensor(12, 6, 3, (i, j, k) => (i + 1) * (j + 1) * (k + 1));
473+
var cpuTensor = _cpu.Create3DTensor(tensor);
474+
var cpuCombined = cpuTensor.CombineDepthSlices();
475+
476+
using (var gpuTensor = _cuda.Create3DTensor(tensor))
477+
using (var gpuCombined = gpuTensor.CombineDepthSlices())
478+
FloatingPointHelper.AssertEqual(cpuCombined.AsIndexable(), gpuCombined.AsIndexable());
479+
}
480+
443481
[TestMethod]
444482
public void TensorAddInPlace()
445483
{
@@ -682,11 +720,26 @@ public void Tensor4DColumnSums()
682720
}
683721
}
684722

723+
[TestMethod]
724+
public void Tensor4DGetTensorAt()
725+
{
726+
var data = Enumerable.Range(0, 5)
727+
.Select(z => _CreateTensor(3, 4, 2, (i, j, k) => (i + 1) * (j + 1) * (k + 1))).ToList();
728+
var cpu4dTensor = _cpu.Create4DTensor(data);
729+
730+
using (var gpu4dTensor = _cuda.Create4DTensor(data)) {
731+
for (var i = 0; i < 5; i++) {
732+
var cpuTensor = cpu4dTensor.GetTensorAt(i);
733+
var gpuTensor = gpu4dTensor.GetTensorAt(i);
734+
FloatingPointHelper.AssertEqual(cpuTensor.AsIndexable(), gpuTensor.AsIndexable());
735+
}
736+
}
737+
}
685738

686739
[TestMethod]
687740
public void Tensor4DReverseIm2Col()
688741
{
689-
const int rows = 4, columns = 4, depth = 2, count = 2, filterWidth = 2, filterHeight = 2, filterCount = 4, stride = 2;
742+
const int rows = 4, columns = 4, depth = 1, count = 1, filterWidth = 2, filterHeight = 2, filterCount = 1, stride = 2;
690743

691744
var normalDistribution = new Normal(0, 1);
692745
var data = Enumerable.Range(0, count)
@@ -698,8 +751,6 @@ public void Tensor4DReverseIm2Col()
698751
for (var i = 0; i < cpuFilter.ColumnCount; i++)
699752
cpuFilterList.Add(cpuFilter.Column(i).Split(depth).Select(v => v.Rotate(v.Count / filterWidth)).ToList());
700753

701-
var cpuReverseIm2Col = cpuTensor.ReverseIm2Col(cpuFilterList, rows, columns, depth, 0, filterHeight, filterWidth, stride);
702-
703754
using (var gpuTensor = _cuda.Create4DTensor(data))
704755
using (var gpuFilter = _cuda.CreateMatrix(cpuFilter.AsIndexable())) {
705756
var gpuFilterList = new List<IReadOnlyList<IVector>>();
@@ -720,9 +771,12 @@ public void Tensor4DReverseIm2Col()
720771
}
721772
FloatingPointHelper.AssertEqual(cpuTensor.AsIndexable(), gpuTensor.AsIndexable());
722773

774+
var cpuReverseIm2Col = cpuTensor.ReverseIm2Col(cpuFilterList, rows, columns, depth, 0, filterHeight, filterWidth, stride);
723775
using (var gpuReverseIm2Col = gpuTensor.ReverseIm2Col(gpuFilterList, rows, columns, depth, 0, filterHeight, filterWidth, stride)) {
724776
var cpuResult = cpuReverseIm2Col.AsIndexable();
725777
var gpuResult = gpuReverseIm2Col.AsIndexable();
778+
var cpuXml = cpuResult.AsXml;
779+
var gpuXml = gpuResult.AsXml;
726780
FloatingPointHelper.AssertEqual(cpuResult, gpuResult);
727781

728782
foreach (var filter in gpuFilterList) {

0 commit comments

Comments
 (0)