Keras:设置简单循环层的初始状态,保持状态为False

时间:2019-03-19 11:39:18

标签: python keras initialization recurrent-neural-network

我需要用keras设置RNN单元的初始状态,以研究网络响应(预训练)对不同的初始值的理解,但是我对方法的语法感到困惑。这是我的模型:

model = Sequential()
model.add(SimpleRNN(units=N_rec,return_sequences=True,input_shape=(None, 2), kernel_initializer='glorot_uniform', recurrent_initializer= pepe ,activation='tanh',use_bias=False))
model.add(Dense(units=1,input_dim=N_rec))

我的数据类型是两个通道的时间序列和固定长度。我需要使用'stateful = False'。

我正在使用顺序模型,并且试图设置图层状态,但它不起作用。我正在使用:Keras版本2.0.6

我使用了:model.layers[0].states[0] =np.ones(N_rec),其中N_rec是单位数。没有效果。我使用“一个”设置初始值,然后尝试使用不同的初始化。 我也尝试:K.set_value(model.layers[0].states[0],h_tm),其中h_tm= tf.zeros([N_rec])出现以下错误:

AttributeError:'NoneType'对象没有属性'dtype'

我也尝试使用:

def set_states(model, states):
for (d,_), s in zip(model.state_updates, states):
    K.set_value(d, s) 

但是由于我不太精通编程,所以我不确定语法。 打印我使用的状态:

for layer in model.layers:
        print" 1"
        if getattr(layer,'stateful',False):
            if hasattr(layer,'states'):
               print "a c a "
               for state in layer[0].states:
                   statesAll.append(K.get_value(state))
print"STATES",statesAll 

但是我得到一个空列表。

我也尝试使用函数模型语法,但是我不确定我做得是否正确。

我也尝试使用复位状态,但是不允许在函数上加上参数,它是模型函数,而不是层函数。

我发现的示例更加复杂,因为它们是编码器。

0 个答案:

没有答案