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() 打印张量的值。
我想查看计算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() 打印张量的值。