Browse Source

Add two simple sequential test case of pb model save.

pull/976/head
AsakusaRinne 2 years ago
parent
commit
6c07778243
2 changed files with 34 additions and 34 deletions
  1. +1
    -1
      src/TensorFlowNET.Keras/Engine/Model.Save.cs
  2. +33
    -33
      test/TensorFlowNET.Keras.UnitTest/SaveModel/SequentialModelTest.cs

+ 1
- 1
src/TensorFlowNET.Keras/Engine/Model.Save.cs View File

@@ -25,7 +25,7 @@ namespace Tensorflow.Keras.Engine
ConcreteFunction? signatures = null,
bool save_traces = true)
{
if (save_format != "pb")
if (save_format != "tf")
{
saver.save(this, filepath);
}


test/TensorFlowNET.Keras.UnitTest/SaveTest.cs → test/TensorFlowNET.Keras.UnitTest/SaveModel/SequentialModelTest.cs View File

@@ -17,18 +17,13 @@ using Tensorflow.Keras.Metrics;
using Tensorflow.Keras.Optimizers;
using Tensorflow.Operations;

namespace TensorFlowNET.Keras.UnitTest;

public static class AutoGraphExtension
{
}
namespace TensorFlowNET.Keras.UnitTest.SaveModel;

[TestClass]
public class SaveTest
public class SequentialModelTest
{
[TestMethod]
public void Test()
public void SimpleModelFromAutoCompile()
{
var inputs = new KerasInterface().Input((28, 28, 1));
var x = new Flatten(new FlattenArgs()).Apply(inputs);
@@ -36,10 +31,8 @@ public class SaveTest
x = new LayersApi().Dense(units: 10).Apply(x);
var outputs = new LayersApi().Softmax(axis: 1).Apply(x);
var model = new KerasInterface().Model(inputs, outputs);
model.compile(new Adam(0.001f), new LossesApi().SparseCategoricalCrossentropy(), new string[]{"accuracy"});

var g = ops.get_default_graph();
model.compile(new Adam(0.001f), new LossesApi().SparseCategoricalCrossentropy(), new string[] { "accuracy" });

var data_loader = new MnistModelLoader();
var num_epochs = 1;
@@ -49,34 +42,41 @@ public class SaveTest
{
TrainDir = "mnist",
OneHot = false,
ValidationSize = 50000,
ValidationSize = 10000,
}).Result;
model.fit(dataset.Train.Data, dataset.Train.Labels, batch_size, num_epochs);
model.save("C:\\Work\\tf.net\\tf_test\\tf.net.model", save_format:"pb");
model.save("C:\\Work\\tf.net\\tf_test\\tf.net.simple.compile", save_format: "tf");
}

[TestMethod]
public void Temp()
public void SimpleModelFromSequential()
{
var graph = new Graph();
var g = graph.as_default();
//var input_tensor = array_ops.placeholder(TF_DataType.TF_FLOAT, new int[] { 1 }, "test_string_tensor");
var input_tensor = tf.placeholder(tf.int32, new int[] { 1 }, "aa");
var wrapped_func = tf.autograph.to_graph(func);
var res = wrapped_func(input_tensor);
g.Exit();
}
Model model = KerasApi.keras.Sequential(new List<ILayer>()
{
keras.layers.InputLayer((28, 28, 1)),
keras.layers.Flatten(),
keras.layers.Dense(100, "relu"),
keras.layers.Dense(10),
keras.layers.Softmax(1)
});

private Tensor func(Tensor tensor)
{
return gen_ops.neg(tensor);
//return array_ops.identity(tensor);
//tf.device("cpu:0");
//using (ops.control_dependencies(new object[] { res.op }))
//{
// return array_ops.identity(tensor);
//}
model.compile(new Adam(0.001f), new LossesApi().SparseCategoricalCrossentropy(), new string[] { "accuracy" });

var data_loader = new MnistModelLoader();
var num_epochs = 1;
var batch_size = 50;

var dataset = data_loader.LoadAsync(new ModelLoadSetting
{
TrainDir = "mnist",
OneHot = false,
ValidationSize = 10000,
}).Result;

model.fit(dataset.Train.Data, dataset.Train.Labels, batch_size, num_epochs);

model.save("C:\\Work\\tf.net\\tf_test\\tf.net.simple.sequential", save_format: "tf");
}
}

Loading…
Cancel
Save