ADAM 优化器如何在 keras 中输出 v_t 的特定值?
Posted
技术标签:
【中文标题】ADAM 优化器如何在 keras 中输出 v_t 的特定值?【英文标题】:How does the ADAM optimizer output a specific value for v_t in keras? 【发布时间】:2018-04-03 12:30:41 【问题描述】:我想查看计算 v_t 的 ADAM 算法每次迭代的结果,所以我在 keras\optimizers.py 文件中的 Adam 类中添加了以下代码:
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 类本身的一部分,下一行添加了自己的:
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] 具有负尺寸 [[节点: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'])
我只想输出这个形状的每个值。
【问题讨论】:
【参考方案1】:如果您的后端是 Tensorflow,您可以使用 tf.Print() 打印张量的值。
【讨论】:
我试过你提供的方法。代码如下:a = tf.Print(v_t,[v_t,v_t.shape,'any thing i want'],message='Debug message:',summarize=100)``print('a:',a)
结果还是一样。a: Tensor("training/Adam/Print:0", shape=(8, 512), dtype=float32)
我想要形状中的每一个数字。
我用的是ipython,输出的期望值不兼容。换成命令行即可,谢谢解答。以上是关于ADAM 优化器如何在 keras 中输出 v_t 的特定值?的主要内容,如果未能解决你的问题,请参考以下文章