我的网络中有一个相当复杂的量化层,其中包含tf.tile
和tf.expand_dims
操作。我注意到我的网络训练不好。看一些调试输出,我看到在该量化层之前完全连接的层的权重为零梯度(我使用optimizer.compute_gradients
来确定这一点)。这是否意味着量化层在训练中不更新之前的情况?
一般情况下:我如何确定哪些操作允许渐变通过哪些操作?例如,上面提到的tf.tile
和tf.expand_dims
让渐变通过`
答案 0 :(得分:3)
如果模型中没有渐变的操作,则会出现错误:
LookupError: No gradient defined for operation [...]
所以你的问题似乎在其他地方,也许你会在某个地方乘以零来杀死渐变。您的问题中没有足够的信息来找出问题的真正原因。
编辑: 我没有直接回答哪些操作支持自动渐变的问题。
它没有在文档中列出,我认为您只能通过检查源代码或使用操作来查看它,并在尝试优化模型时查看是否出现上述错误。
对于tf.tile
和tf.expand_dims
,定义了渐变。