在Keras中修改图层权重

时间:2017-08-07 04:49:14

标签: python deep-learning keras

我正在尝试修改Keras中图层的输出。我有一个编码器,它将时间序列转换为潜在空间,之后,对于每个压缩的时间序列,我想在时间序列中添加一些数字。

例如我有:

input_d = Input((100,))
h1_d = Reshape((100, 1))(input_d)
h2_d = LSTM(150, return_sequences=True)(h1_d)
h3_d = TimeDistributed(Dense(64, activation='linear'))(h2_d)
h4_d = LSTM(150)(h3_d)
output_d = Dense(30, activation='linear')(h4_d)

我想做这样的事情:

new_weights = []
for i in outputs_d.weights:
    new_weights.append(np.vstack(([1,2,3], i)))

但问题是我不知道在哪个时刻我可以这样做,因为如果在ouput_d之后写一个Lambda图层我就无法访问权重。

1 个答案:

答案 0 :(得分:2)

我发现做这样的事情的唯一方法是将所需的功能作为回调实现,您可以通过self.model.trainable_weightsself.model.get_weights()访问模型,从而获得权重。< / p>