在Keras中修改层权重

3

我想修改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个回答

3
我发现实现这样的功能唯一的方法是将所需的功能作为回调函数实现,通过 self.model.trainable_weights 或者 self.model.get_weights() 可以访问模型和权重。

你有关于如何修改这些权重的建议吗? - desert_ranger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接