关于计算图

来源:7-13 计算图输入定义

紫梦沁香

2021-08-03

(1)为什么keep_prob和global_step要加name?而inputs和outputs不用加?
(2)另外不加name,tensorflow会自动给一个name吗?还是说这个变量就没有name了?
(3)trainable = False和True有什么区别?能不能举个例子,比如说这里global_step取True会发生什么问题,取False又如何解决的这个问题?
(4)对于trainable,我个人理解就是,loss损失函数对global_step的偏导应该是为0的,因为loss和global_step没有任何关系,那么在梯度下降的过程中,即使global_step取trainable = True,在每一次的训练迭代中,global_step的值也不会梯度下降而改变,是这么理解的吗?
图片描述

写回答

1回答

正十七

2021-08-23

  1. inputs/outputs也可以加

  2. tf会自动给name。

  3. training=False是表示不参与梯度计算,即不会被梯度更新。至于global_step的training=True会发生什么问题,我还真没实验过,你试试看看会发生什么问题?我觉得主要在于底层的实现,不过我看了看源码,也没看出来training=True会让global step发生什么问题,源码在此:https://github.com/tensorflow/tensorflow/blob/v2.6.0/tensorflow/python/training/optimizer.py#L539-L648

  4. 见答案3, 可以自己试试。我理解global_step就是在optimizer.apply_gradients的时候自动加1.

0
0

深度学习之神经网络(CNN/RNN/GAN)算法原理+实战

深度学习算法工程师必学,深入理解深度学习核心算法CNN RNN GAN

2617 学习 · 935 问题

查看课程