aboutsummaryrefslogtreecommitdiff
path: root/nerv/layer
diff options
context:
space:
mode:
Diffstat (limited to 'nerv/layer')
-rw-r--r--nerv/layer/affine.lua3
-rw-r--r--nerv/layer/bias.lua3
-rw-r--r--nerv/layer/init.lua12
-rw-r--r--nerv/layer/lstm_gate.lua3
-rw-r--r--nerv/layer/window.lua3
5 files changed, 17 insertions, 7 deletions
diff --git a/nerv/layer/affine.lua b/nerv/layer/affine.lua
index a05ae17..a1c92b1 100644
--- a/nerv/layer/affine.lua
+++ b/nerv/layer/affine.lua
@@ -90,7 +90,8 @@ function AffineLayer:bind_params()
self.ltp = self.ltp1 -- alias of ltp1
self.bp = self:find_param("bp", self.lconf, self.gconf,
nerv.BiasParam,
- {1, self.dim_out[1]})
+ {1, self.dim_out[1]},
+ nerv.Param.gen_zero)
end
diff --git a/nerv/layer/bias.lua b/nerv/layer/bias.lua
index 191be78..03e310d 100644
--- a/nerv/layer/bias.lua
+++ b/nerv/layer/bias.lua
@@ -9,7 +9,8 @@ end
function BiasLayer:bind_params()
self.bias = self:find_param("bias", self.lconf, self.gconf,
nerv.BiasParam,
- {1, self.dim_out[1]})
+ {1, self.dim_out[1]},
+ nerv.Param.gen_zero)
end
function BiasLayer:init()
diff --git a/nerv/layer/init.lua b/nerv/layer/init.lua
index d266773..c5b7657 100644
--- a/nerv/layer/init.lua
+++ b/nerv/layer/init.lua
@@ -27,6 +27,10 @@ function Param:update(gradient)
nerv.error_method_not_implemented()
end
+function Param:gen_zero()
+ return 0
+end
+
local Layer = nerv.class('nerv.Layer')
function Layer:__init(id, global_conf, layer_conf)
@@ -93,7 +97,7 @@ function Layer:get_sublayer(id)
nerv.error('primitive layer does not have sublayers')
end
-function Layer:find_param(plist, lconf, gconf, p_type, p_dim)
+function Layer:find_param(plist, lconf, gconf, p_type, p_dim, p_gen)
if type(plist) == "string" then
plist = {plist}
end
@@ -120,10 +124,12 @@ function Layer:find_param(plist, lconf, gconf, p_type, p_dim)
"switch to auto-generate", plist_str, self.id)
local p = p_type(pid, gconf)
p.trans = self.mat_type(unpack(p_dim))
- if type(gconf.param_random) ~= "function" then
+ p_gen = p_gen or gconf.param_gen
+ or gconf.param_random -- obsolete name
+ if type(p_gen) ~= "function" then
nerv.error("a param generate function is needed")
end
- p.trans:generate(gconf.param_random)
+ p.trans:generate(p_gen)
return p
end
diff --git a/nerv/layer/lstm_gate.lua b/nerv/layer/lstm_gate.lua
index 9d79b04..e3b11b4 100644
--- a/nerv/layer/lstm_gate.lua
+++ b/nerv/layer/lstm_gate.lua
@@ -18,7 +18,8 @@ function LSTMGateLayer:bind_params()
end
end
self.bp = self:find_param("bp", self.lconf, self.gconf,
- nerv.BiasParam, {1, self.dim_out[1]})
+ nerv.BiasParam, {1, self.dim_out[1]},
+ nerv.Param.gen_zero)
end
function LSTMGateLayer:init(batch_size)
diff --git a/nerv/layer/window.lua b/nerv/layer/window.lua
index 364929f..729ab58 100644
--- a/nerv/layer/window.lua
+++ b/nerv/layer/window.lua
@@ -9,7 +9,8 @@ end
function WindowLayer:bind_params()
self.window = self:find_param("window", self.lconf, self.gconf,
nerv.BiasParam,
- {1, self.dim_out[1]})
+ {1, self.dim_out[1]},
+ nerv.Param.gen_zero)
end
function WindowLayer:init()