public void CloneTest() { ScaleLayer layer1 = new ScaleLayer(new Shape(new int[] { -1, 1000 }), 0.7f); ScaleLayer layer2 = layer1.Clone() as ScaleLayer; Assert.AreEqual(JsonConvert.SerializeObject(layer1), JsonConvert.SerializeObject(layer2)); }
public void CopyConstructorTest1() { ScaleLayer layer1 = new ScaleLayer(new Shape(new int[] { -1, 1000 }), 0.7f); ScaleLayer layer2 = new ScaleLayer(layer1); Assert.AreEqual(JsonConvert.SerializeObject(layer1), JsonConvert.SerializeObject(layer2)); }
public void ForwardBackwardTest() { Shape shape = new Shape(new int[] { -1, 1000 }); ScaleLayer layer = new ScaleLayer(shape, 0.7f); for (int i = 1; i <= 3; i++) { Session session = new Session(); Tensor x = new Tensor(null, shape.Reshape(0, i)); x.Randomize(); Tensor y = layer.Forward(session, new[] { x })[0]; Tensor expected = new Tensor(null, x.Axes); expected.Set(x.Weights.Take(x.Length).Select(w => w * layer.Alpha).ToArray()); Helpers.AreTensorsEqual(expected, y); // unroll the graph y.SetGradient(y.Weights); session.Unroll(); Helpers.AreArraysEqual( y.Length, y.Gradient.Take(y.Length).Select(w => w * layer.Alpha).ToArray(), x.Gradient); } }
public void ArchitectureConstructorTest1() { Shape shape = new Shape(new int[] { -1, 1000 }); ScaleLayer layer = new ScaleLayer(shape, "S0.7", null); CollectionAssert.AreEqual(shape.Axes, layer.OutputShape.Axes); Assert.AreEqual("S0.7", layer.Architecture); }
public void SerializeTest() { ScaleLayer layer1 = new ScaleLayer(new Shape(new int[] { -1, 1000 }), 0.7f); string s1 = JsonConvert.SerializeObject(layer1); ScaleLayer layer2 = JsonConvert.DeserializeObject <ScaleLayer>(s1); string s2 = JsonConvert.SerializeObject(layer2); Assert.AreEqual(s1, s2); }
public void ArchitectureConstructorTest2() { string architecture = "S"; try { ScaleLayer layer = new ScaleLayer(new Shape(new int[] { -1, 1000 }), architecture, null); } catch (ArgumentException e) { Assert.AreEqual( new ArgumentException(string.Format(CultureInfo.InvariantCulture, Properties.Resources.E_InvalidLayerArchitecture, architecture), nameof(architecture)).Message, e.Message); throw; } }