Browse Source

Move keras unit test in seperate project.

tags/yolov3
Oceania2018 4 years ago
parent
commit
77e6bb527a
16 changed files with 120 additions and 20 deletions
  1. +26
    -0
      TensorFlow.NET.sln
  2. +1
    -1
      src/TensorFlowNET.Core/Tensorflow.Binding.csproj
  3. +50
    -0
      test/TensorFlowNET.Keras.UnitTest/EagerModeTestBase.cs
  4. +2
    -6
      test/TensorFlowNET.Keras.UnitTest/Layers/ActivationTest.cs
  5. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/CosineSimilarity.Test.cs
  6. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/Huber.Test.cs
  7. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Merging.Test.cs
  8. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Reshaping.Test.cs
  9. +3
    -3
      test/TensorFlowNET.Keras.UnitTest/Layers/LayersTest.cs
  10. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/LogCosh.Test.cs
  11. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/MeanAbsoluteError.Test.cs
  12. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/MeanAbsolutePercentageError.Test.cs
  13. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/MeanSquaredError.Test.cs
  14. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/MeanSquaredLogarithmicError.Test.cs
  15. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Layers/ModelSaveTest.cs
  16. +28
    -0
      test/TensorFlowNET.Keras.UnitTest/Tensorflow.Keras.UnitTest.csproj

+ 26
- 0
TensorFlow.NET.sln View File

@@ -19,6 +19,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Recommenders", "
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Native.UnitTest", "test\TensorFlowNET.Native.UnitTest\Tensorflow.Native.UnitTest.csproj", "{84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Native.UnitTest", "test\TensorFlowNET.Native.UnitTest\Tensorflow.Native.UnitTest.csproj", "{84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Keras.UnitTest", "test\TensorFlowNET.Keras.UnitTest\Tensorflow.Keras.UnitTest.csproj", "{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -227,6 +229,30 @@ Global
{84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x64.Build.0 = Release|Any CPU {84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x64.Build.0 = Release|Any CPU
{84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x86.ActiveCfg = Release|Any CPU {84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x86.ActiveCfg = Release|Any CPU
{84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x86.Build.0 = Release|Any CPU {84CA35F8-99FC-408E-8DF3-5AA175E5EFD3}.Release|x86.Build.0 = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|x64.ActiveCfg = Debug|x64
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|x64.Build.0 = Debug|x64
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|x86.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug|x86.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|Any CPU.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|Any CPU.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|x64.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|x64.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|x86.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Debug-Minimal|x86.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|Any CPU.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|Any CPU.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|x64.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|x64.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|x86.ActiveCfg = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Publish|x86.Build.0 = Debug|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|Any CPU.Build.0 = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|x64.ActiveCfg = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|x64.Build.0 = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|x86.ActiveCfg = Release|Any CPU
{79EB56DF-E29E-4AE2-A7D9-FE403FD919BA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE


+ 1
- 1
src/TensorFlowNET.Core/Tensorflow.Binding.csproj View File

@@ -82,7 +82,7 @@ TensorFlow .NET v0.3x is focused on making more Keras API works</PackageReleaseN
<ItemGroup> <ItemGroup>
<PackageReference Include="MethodBoundaryAspect.Fody" Version="2.0.138" /> <PackageReference Include="MethodBoundaryAspect.Fody" Version="2.0.138" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
<PackageReference Include="NumSharp.Lite" Version="0.1.10" />
<PackageReference Include="NumSharp.Lite" Version="0.1.11" />
<PackageReference Include="Protobuf.Text" Version="0.4.0" /> <PackageReference Include="Protobuf.Text" Version="0.4.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
</ItemGroup> </ItemGroup>


+ 50
- 0
test/TensorFlowNET.Keras.UnitTest/EagerModeTestBase.cs View File

@@ -0,0 +1,50 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using static Tensorflow.Binding;

namespace TensorFlowNET.Keras.UnitTest
{
public class EagerModeTestBase
{
[TestInitialize]
public void TestInit()
{
if (!tf.executing_eagerly())
tf.enable_eager_execution();
tf.Context.ensure_initialized();
}

[TestCleanup]
public void TestClean()
{
}

public bool Equal(float[] f1, float[] f2)
{
bool ret = false;
var tolerance = .000001f;
for (var i = 0; i < f1.Length; i++)
{
ret = Math.Abs(f1[i] - f2[i]) <= tolerance;
if (!ret)
break;
}

return ret;
}

public bool Equal(double[] d1, double[] d2)
{
bool ret = false;
var tolerance = .000000000000001f;
for (var i = 0; i < d1.Length; i++)
{
ret = Math.Abs(d1[i] - d2[i]) <= tolerance;
if (!ret)
break;
}

return ret;
}
}
}

test/TensorFlowNET.UnitTest/Keras/ActivationTest.cs → test/TensorFlowNET.Keras.UnitTest/Layers/ActivationTest.cs View File

@@ -6,7 +6,7 @@ using NumSharp;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;
using Tensorflow; using Tensorflow;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class ActivationTest : EagerModeTestBase public class ActivationTest : EagerModeTestBase
@@ -16,11 +16,7 @@ namespace TensorFlowNET.UnitTest.Keras
{ {
var layer = keras.layers.LeakyReLU(); var layer = keras.layers.LeakyReLU();
Tensor output = layer.Apply(np.array(-3.0f, -1.0f, 0.0f, 2.0f)); Tensor output = layer.Apply(np.array(-3.0f, -1.0f, 0.0f, 2.0f));
var outputArray = output.ToArray<float>();
assertFloat32Equal(-0.9f, outputArray[0], "Not equal");
assertFloat32Equal(-0.3f, outputArray[1], "Not equal");
assertFloat32Equal(0.0f, outputArray[2], "Not equal");
assertFloat32Equal(2.0f, outputArray[3], "Not equal");
Equal(new[] { -0.9f, -0.3f, 0.0f, 2.0f }, output.ToArray<float>());
} }
} }
} }

test/TensorFlowNET.UnitTest/Keras/CosineSimilarity.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/CosineSimilarity.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class CosineSimilarity public class CosineSimilarity

test/TensorFlowNET.UnitTest/Keras/Huber.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/Huber.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class Huber public class Huber

test/TensorFlowNET.UnitTest/Keras/Layers.Merging.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Merging.Test.cs View File

@@ -3,7 +3,7 @@ using NumSharp;
using Tensorflow; using Tensorflow;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class LayersMergingTest : EagerModeTestBase public class LayersMergingTest : EagerModeTestBase

test/TensorFlowNET.UnitTest/Keras/Layers.Reshaping.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Reshaping.Test.cs View File

@@ -3,7 +3,7 @@ using NumSharp;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class LayersReshapingTest : EagerModeTestBase public class LayersReshapingTest : EagerModeTestBase

test/TensorFlowNET.UnitTest/Keras/LayersTest.cs → test/TensorFlowNET.Keras.UnitTest/Layers/LayersTest.cs View File

@@ -3,7 +3,7 @@ using NumSharp;
using Tensorflow; using Tensorflow;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
/// <summary> /// <summary>
/// https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/layers /// https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/layers
@@ -24,7 +24,7 @@ namespace TensorFlowNET.UnitTest.Keras
var layers = keras.layers; var layers = keras.layers;


var inputs = keras.Input(shape: 784); var inputs = keras.Input(shape: 784);
Assert.AreEqual((None, 784), inputs.TensorShape);
Assert.AreEqual((-1, 784), inputs.TensorShape);


var dense = layers.Dense(64, activation: keras.activations.Relu); var dense = layers.Dense(64, activation: keras.activations.Relu);
var x = dense.Apply(inputs); var x = dense.Apply(inputs);
@@ -59,7 +59,7 @@ namespace TensorFlowNET.UnitTest.Keras
}); });
// model.compile("rmsprop", "mse"); // model.compile("rmsprop", "mse");
var output_array = model.predict(input_array); var output_array = model.predict(input_array);
Assert.AreEqual((32, 10, 64), output_array.TensorShape);
Assert.AreEqual((32, 10, 64), output_array.shape);
} }


/// <summary> /// <summary>

test/TensorFlowNET.UnitTest/Keras/LogCosh.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/LogCosh.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class LogCosh public class LogCosh

test/TensorFlowNET.UnitTest/Keras/MeanAbsoluteError.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/MeanAbsoluteError.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class MeanAbsoluteError public class MeanAbsoluteError

test/TensorFlowNET.UnitTest/Keras/MeanAbsolutePercentageError.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/MeanAbsolutePercentageError.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class MeanAbsolutePercentageError public class MeanAbsolutePercentageError

test/TensorFlowNET.UnitTest/Keras/MeanSquaredError.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/MeanSquaredError.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class MeanSquaredErrorTest public class MeanSquaredErrorTest

test/TensorFlowNET.UnitTest/Keras/MeanSquaredLogarithmicError.Test.cs → test/TensorFlowNET.Keras.UnitTest/Layers/MeanSquaredLogarithmicError.Test.cs View File

@@ -5,7 +5,7 @@ using Tensorflow.Keras.Losses;
using static Tensorflow.Binding; using static Tensorflow.Binding;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
[TestClass] [TestClass]
public class MeanSquaredLogarithmicError public class MeanSquaredLogarithmicError

test/TensorFlowNET.UnitTest/Keras/ModelSaveTest.cs → test/TensorFlowNET.Keras.UnitTest/Layers/ModelSaveTest.cs View File

@@ -2,7 +2,7 @@
using Tensorflow.Keras.Engine; using Tensorflow.Keras.Engine;
using static Tensorflow.KerasApi; using static Tensorflow.KerasApi;


namespace TensorFlowNET.UnitTest.Keras
namespace TensorFlowNET.Keras.UnitTest
{ {
/// <summary> /// <summary>
/// https://www.tensorflow.org/guide/keras/save_and_serialize /// https://www.tensorflow.org/guide/keras/save_and_serialize

+ 28
- 0
test/TensorFlowNET.Keras.UnitTest/Tensorflow.Keras.UnitTest.csproj View File

@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>

<IsPackable>false</IsPackable>

<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.1" />
<PackageReference Include="coverlet.collector" Version="1.3.0" />
<PackageReference Include="SciSharp.TensorFlow.Redist" Version="2.3.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\TensorFlowNET.Keras\Tensorflow.Keras.csproj" />
</ItemGroup>

</Project>

Loading…
Cancel
Save