public void DropoutLayer_ForwardTestPhase() { Context.Instance.Phase = PhaseType.Test; var layer = new DropoutLayer(); layer.Setup(bottom, top); layer.Forward(bottom, top); Assert.Equal(bottom.Count, top.Count); using (var topCpu = top.OnCpu()) using (var bottomCpu = bottom.OnCpu()) { int count = bottom.Count; for (int i = 0; i < count; i++) { if (!MathHelpers.Equality(topCpu.DataAt(i), 0)) { Assert.True(MathHelpers.Equality(topCpu.DataAt(i), bottomCpu.DataAt(i))); } } ; } }
public void DropoutLayer_ForwardTrainPhase(double ratio) { Context.Instance.Phase = PhaseType.Train; var config = new DropoutLayerConfiguration(ratio); var layer = new DropoutLayer(config); layer.Setup(bottom, top); layer.Forward(bottom, top); Assert.Equal(bottom.Count, top.Count); using (var topCpu = top.OnCpu()) using (var bottomCpu = bottom.OnCpu()) { double scale = 1f / (1f - layer.Parameters.Ratio); int count = bottom.Count; int kept = 0; for (int i = 0; i < count; i++) { if (!MathHelpers.Equality(topCpu.DataAt(i), 0)) { kept++; Assert.True(MathHelpers.Equality(topCpu.DataAt(i), bottomCpu.DataAt(i) * scale)); } } ; double stdError = Math.Sqrt(ratio * (1 - ratio) / count); double empiricalDropoutRatio = 1.0d - ((double)kept / count); Assert.True(MathHelpers.Equality(ratio, empiricalDropoutRatio, 1.96 * stdError)); } }
public void DropoutLayer_Setup() { var layer = new DropoutLayer(); layer.Setup(bottom, top); Assert.Equal(bottom.Num, top.Num); Assert.Equal(bottom.Channels, top.Channels); Assert.Equal(bottom.Height, top.Height); Assert.Equal(bottom.Width, top.Width); }
public void DropoutLayer_ForwardTestPhase() { Context.Instance.Phase = PhaseType.Test; var layer = new DropoutLayer(); layer.Setup(bottom, top); layer.Forward(bottom, top); Assert.Equal(bottom.Count, top.Count); using (var topCpu = top.OnCpu()) using (var bottomCpu = bottom.OnCpu()) { int count = bottom.Count; for (int i = 0; i < count; i++) { if (!MathHelpers.Equality(topCpu.DataAt(i), 0)) Assert.True(MathHelpers.Equality(topCpu.DataAt(i), bottomCpu.DataAt(i))); }; } }
public void DropoutLayer_ForwardTrainPhase(double ratio) { Context.Instance.Phase = PhaseType.Train; var config = new DropoutLayerConfiguration(ratio); var layer = new DropoutLayer(config); layer.Setup(bottom, top); layer.Forward(bottom, top); Assert.Equal(bottom.Count, top.Count); using (var topCpu = top.OnCpu()) using (var bottomCpu = bottom.OnCpu()) { double scale = 1f / (1f - layer.Parameters.Ratio); int count = bottom.Count; int kept = 0; for (int i = 0; i < count; i++) { if (!MathHelpers.Equality(topCpu.DataAt(i), 0)) { kept++; Assert.True(MathHelpers.Equality(topCpu.DataAt(i), bottomCpu.DataAt(i) * scale)); } }; double stdError = Math.Sqrt(ratio * (1 - ratio) / count); double empiricalDropoutRatio = 1.0d - ((double)kept / count); Assert.True(MathHelpers.Equality(ratio, empiricalDropoutRatio, 1.96 * stdError)); } }