aboutsummaryrefslogtreecommitdiff
path: root/examples/test_dnn_layers.lua
diff options
context:
space:
mode:
authorcloudygoose <[email protected]>2015-06-03 10:29:41 +0800
committercloudygoose <[email protected]>2015-06-03 10:29:41 +0800
commitbf01fd6cea42def51becb6ea866d4fd335e45842 (patch)
tree09d12e50e3a6156c7e0cd7412b22fa4b61189495 /examples/test_dnn_layers.lua
parent6984519cbb659aac0b0b323de93d5a90aa2049b7 (diff)
parentbb56a806e0636a0b20117b1644701d63e2bfaefb (diff)
...
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'examples/test_dnn_layers.lua')
-rw-r--r--examples/test_dnn_layers.lua43
1 files changed, 23 insertions, 20 deletions
diff --git a/examples/test_dnn_layers.lua b/examples/test_dnn_layers.lua
index 866e685..6e4d98d 100644
--- a/examples/test_dnn_layers.lua
+++ b/examples/test_dnn_layers.lua
@@ -11,10 +11,14 @@ bp = pf:read_chunk("b", global_conf)
-- print(bp.trans)
-af = nerv.AffineLayer("test", global_conf, ltp, bp)
-sg = nerv.SigmoidLayer("test2", global_conf)
-sm = nerv.SoftmaxCELayer("test3", global_conf)
-
+af = nerv.AffineLayer("test", global_conf, {["ltp"] = ltp,
+ ["bp"] = bp,
+ dim_in = {429},
+ dim_out = {2048}})
+sg = nerv.SigmoidLayer("test2", global_conf, {dim_in = {2048},
+ dim_out = {2048}})
+sm = nerv.SoftmaxCELayer("test3", global_conf, {dim_in = {2048, 2048},
+ dim_out = {}})
af:init()
sg:init()
sm:init()
@@ -27,18 +31,18 @@ for i = 0, 9 do
label[i][i] = 1.0
end
-input1 = {[0] = df:read_chunk("input", global_conf).trans}
-output1 = {[0] = nerv.CuMatrixFloat(10, 2048)}
+input1 = {df:read_chunk("input", global_conf).trans}
+output1 = {nerv.CuMatrixFloat(10, 2048)}
input2 = output1
-output2 = {[0] = nerv.CuMatrixFloat(10, 2048)}
-input3 = {[0] = output2[0], [1] = label}
+output2 = {nerv.CuMatrixFloat(10, 2048)}
+input3 = {output2[1], label}
output3 = nil
err_input1 = nil
-err_output1 = {[0] = nerv.CuMatrixFloat(10, 2048)}
+err_output1 = {nerv.CuMatrixFloat(10, 2048)}
err_input2 = err_output1
-err_output2 = {[0] = nerv.CuMatrixFloat(10, 2048)}
+err_output2 = {nerv.CuMatrixFloat(10, 2048)}
err_input3 = err_output2
-err_output3 = {[0] = input1[0]:create()}
+err_output3 = {input1[1]:create()}
for i = 0, 3 do
-- propagate
@@ -46,26 +50,25 @@ for i = 0, 3 do
sg:propagate(input2, output2)
sm:propagate(input3, output3)
-
-- back_propagate
sm:back_propagate(err_output1, err_input1, input3, output3)
- sm:update(err_input1, input3, output3)
-
sg:back_propagate(err_output2, err_input2, input2, output2)
- sg:update(err_input2, input2, output2)
-
af:back_propagate(err_output3, err_input3, input1, output1)
+
+ -- update
+ sm:update(err_input1, input3, output3)
+ sg:update(err_input2, input2, output2)
af:update(err_input3, input1, output1)
print("output1")
- print(output1[0])
+ print(output1[1])
print("output2")
- print(output2[0])
+ print(output2[1])
print("err_output1")
- print(err_output1[0])
+ print(err_output1[1])
print("err_output2")
- print(err_output2[0])
+ print(err_output2[1])
nerv.utils.printf("cross entropy: %.8f\n", sm.total_ce)
nerv.utils.printf("frames: %.8f\n", sm.total_frames)
end