关于计算图
来源: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
inputs/outputs也可以加
tf会自动给name。
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
见答案3, 可以自己试试。我理解global_step就是在optimizer.apply_gradients的时候自动加1.
00
相似问题