我正在尝试修改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图层我就无法访问权重。
答案 0 :(得分:2)
我发现做这样的事情的唯一方法是将所需的功能作为回调实现,您可以通过self.model.trainable_weights
或self.model.get_weights()
访问模型,从而获得权重。< / p>