ADAM优化器如何在keras中为v_t输出特定值?

How does the ADAM optimizer output a specific value for v_t in keras?

我想查看计算v_t的ADAM算法每次迭代的结果,所以我在keras\optimizers.py中的Adamclass添加了如下代码文件:

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

我想得到这个形状的每个数值,类似于矩阵的形式。 但是下面的输出不是我所期望的:

v_t: Tensor("training/Adam/add_2:0", shape=(8, 512), dtype=float32)

v_t: Tensor("training/Adam/add_5:0", shape=(128, 512), dtype=float32)

这行代码是 Adam class 本身的一部分,下一行添加了自己的代码:

v_t = (self.beta_2 * v) + (1. - self.beta_2) * K.square(g)
print('v_t:',v_t)# This is my added code

我做了以下尝试,但会报如下错误: InvalidArgumentError(回溯见上):形状 [-1,1,8] 具有负尺寸 [[Node: lstm_1_input = Placeholderdtype=DT_FLOAT, shape=[?,1,8], _device="/job:localhost/replica:0/task:0/cpu:0"]]

这是我的模型:

model = Sequential()

model.add(LSTM(128, input_shape=(train_X.shape[1], train_X.shape[2])))

model.add(Dense(1))

model.compile(loss='mae', optimizer='adam',metrics=['mae'])

我只想输出这个形状的每个值。

如果您的后端是 Tensorflow,您可以使用 tf.Print() 打印张量的值。