public void MoveNodeTest() { var model = new StaticModel(); Assert.NotNull(model.GetLayerNodes()); Assert.That(model.GetLayerNodes()?.Length == 0); var layerType = new LayerType("Dropout", "Core", new[] { new Parameter("rate", "Float", "1.0", Array.Empty <string>()) } ); model.AddNode(layerType); var firstNode = model.GetLayerNodes()?.First(); Assert.AreEqual(firstNode, model.GetLayerNodes()?[0]); model.AddNode(layerType); model.MoveNode(1, 0); Assert.AreEqual(firstNode, model.GetLayerNodes()?[1]); model.MoveNode(0, 1); Assert.AreEqual(firstNode, model.GetLayerNodes()?[0]); }
public void Deserialize(System.IO.StreamReader reader, StaticModel staticModel) { var serializer = JsonConvert.DeserializeObject <Serializer>(reader.ReadToEnd()); var types = staticModel.GetLayerTypesLink(); staticModel.GetLayerNodesLink().Clear(); var batch_size = ""; var dtype = ""; var has_input = false; foreach (var layer in serializer.Config.Layers) { staticModel.AddNode(types.FirstOrDefault(t => t.LayerName == layer.ClassName)); var node = staticModel.GetLayerNodesLink().Last(); foreach (var param in layer.Config) { string str; if (param.Value is JArray arr) { str = arr.ToString().Replace("[", "").Replace("]", "").Replace("\n", "").Replace("\r", ""); } else { str = param.Value.ToString(); } switch (param.Key) { case "batch_input_shape": batch_size = str; break; case "dtype": dtype = str; break; default: node.Values[param.Key] = str; break; } if (string.IsNullOrEmpty(dtype) || string.IsNullOrEmpty(batch_size) || has_input) { continue; } staticModel.AddNode(types.FirstOrDefault(t => t.LayerName == "Input"), 0); var input = staticModel.GetLayerNodesLink().First(); input.Values["dtype"] = dtype; input.Values["batch_input_shape"] = batch_size; has_input = true; } } }
public void DeserializeNotEmptyModelTest() { var modelExpected = new StaticModel(); var layerNodesExpected = modelExpected.GetLayersNode(); modelExpected.AddNode(new LayerType("Reshape", "Core", new[] { new Parameter("target_shape", "Tuple", "1", Array.Empty <string>()), } )); var serializer = new Serializer(modelExpected); var memoryStream = new MemoryStream(); var streamWriter = new StreamWriter(memoryStream); serializer.Serialize(streamWriter); streamWriter.Flush(); memoryStream.Seek(0, SeekOrigin.Begin); var deserialiser = new Deserializer(); var modelActual = new StaticModel(); deserializer.Deserialize(new StreamReader(memoryStream), modelActual); var layerNodesActual = modelActual.GetLayersNode(); Assert.IsNotNull(layerNodesActual); Assert.AreEqual(layerNodesExpected.Length, layerNodesActual.Length); CollectionAssert.AreEqual(layerNodesExpected, layerNodesActual); }
private void Add_Click(object sender, RoutedEventArgs e) { var selected = (LayerType)listBox.SelectedItem; if (selected == null) { return; } if (listBox1.SelectedIndex == -1) { _staticModel.AddNode(selected); } else { _staticModel.AddNode(selected, listBox1.SelectedIndex + 1); } }
public void Deserialize([NotNull] StreamReader reader, [NotNull] StaticModel staticModel) { ThrowIf.Variable.IsNull(reader, nameof(reader)); ThrowIf.Variable.IsNull(staticModel, nameof(staticModel)); var serializer = JsonConvert.DeserializeObject <Serializer>(reader.ReadToEnd()); ThrowIf.Variable.IsNull(serializer, nameof(serializer)); ThrowIf.Variable.IsNull(serializer.Config, nameof(serializer.Config)); ThrowIf.Variable.IsNull(serializer.Config.Layers, nameof(serializer.Config.Layers)); var types = staticModel.GetLayerTypesLink(); staticModel.GetLayerNodesLink().Clear(); foreach (var layer in serializer.Config.Layers) { staticModel.AddNode(types.FirstOrDefault(t => t.LayerName == layer.ClassName)); var node = staticModel.GetLayerNodesLink().Last(); ThrowIf.Variable.IsNull(node, nameof(node)); ThrowIf.Variable.IsNull(layer.Config, nameof(layer.Config)); foreach (var param in layer.Config) { string str; if (param.Value is JArray arr) { str = arr.ToString().Replace("[", "").Replace("]", "").Replace("\n", "").Replace("\r", ""); } else { ThrowIf.Variable.IsNull(param.Value, nameof(param.Value)); str = param.Value.ToString(); } switch (param.Key) { case "batch_input_shape": staticModel.BatchSize = str; break; case "dtype": staticModel.DataType = str; break; default: node.Values[param.Key] = str; break; } } } }
public void SerializeNotEmptyModelTest() { var model = new StaticModel(); model.AddNode(new LayerType("Input", "Core", new[] { new Parameter("shape", "Tuple", "1", Array.Empty <string>()), new Parameter("dtype", "String", "float32", new[] { "float32", "float64", "int32" }) } )); model.AddNode(new LayerType("Reshape", "Core", new[] { new Parameter("target_shape", "Tuple", "1", Array.Empty <string>()), } )); var serializer = new Serializer(model); var memoryStream = new MemoryStream(); var streamWriter = new StreamWriter(memoryStream); serializer.Serialize(streamWriter); streamWriter.Flush(); memoryStream.Seek(0, SeekOrigin.Begin); const string expected = "{\"class_name\":\"sequential\",\"config\":{\"name\":\"sequential_1\",\"layers\":[{\"class_name\":\"Reshape\",\"config\":{\"batch_input_shape\":[null,1],\"dtype\":\"float32\"}}]},\"keras_version\":\"2.2.5\",\"backend\":\"tensorflow\"}"; string actual; using (var reader = new StreamReader(memoryStream)) { actual = reader.ReadLine(); } Assert.True(expected.Equals(actual, StringComparison.CurrentCultureIgnoreCase)); }
public void AddNodeTest() { var model = new StaticModel(); Assert.NotNull(model.GetLayerNodes()); Assert.That(model.GetLayerNodes()?.Length == 0); var layerType = new LayerType("Dropout", "Core", new[] { new Parameter("rate", "Float", "1.0", Array.Empty <string>()) } ); model.AddNode(layerType); Assert.That(model.GetLayerNodes()?.Length == 1); }