Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }