问一下关于AdamOptimizer的两个问题
来源:3-4 卷积神经网络实战

会边缘ob的码农
2019-07-17
请问在AdamOptimizer中,是如何针对不同的损失函数进行求导,来梯度下降的呢?
还有就是在下面这段程序里是如何实现反向传播来更新参数的呢?
with tf.Session() as sess:
sess.run(init)
for i in range(train_steps):
batch_data, batch_labels = train_data.next_batch(batch_size)
loss_val, acc_val, _ = sess.run([loss, accuracy, train_op],
feed_dict={ x: batch_data,y: batch_labels})
写回答
1回答
-
AdamOptimizer是利用反向传播去求导的,虽然遇到的损失函数不同,但所有的损失函数其实都是可以求导的,既然可以求导,那么就可以利用链式法则一步步求解下去。
在tensorflow中,求导的细节我们是可以不用关心的,但简单来说,它的原理是在tensorflow的图结构的每个节点上都建立一个求导节点,接收当前节点的输入和输出来为之求导。
代码中的求导是train_op来实现的,run了train_op就会发生求导和参数更新操作。
012019-07-18
相似问题