def lyr_gru_flat(
self, name_,
s_x_, s_state_,
idim_, hdim_,
axis_=-1,
lyr_linear_=None,
op_act_=T.tanh,
op_gate_=T.nnet.sigmoid,
params_group_='params'
):
'''
GRU layer, flat version
In order to use, you need to provide state variable
'''
if lyr_linear_ is None:
lyr_linear_ = self.lyr_linear
s_igate = lyr_linear_(name_+'_igate', idim_+hdim_, idim_, params_group_=params_group_)
s_inp_gated = T.join(axis_, s_x_ * op_gate_(s_igate), s_state_)
s_gate_lin, s_state_tp1_lin = T.split(lyr_linear_(name_+'_gate', s_inp_gated, idim_+hdim_, hdim_*2), [hdim_,hdim_], 2, axis_)
s_gate = op_gate_(s_gate_lin)
return s_state_*s_gate + op_act_(s_state_tp1_lin)*(1.-s_gate)
评论列表
文章目录