首页 > 解决方案 > Tensorflow - 梯度变化但权重变化不大

问题描述

我制作了一个 CNN 来解决回归问题。问题是,当我运行代码时,内核权重的分布不会改变,而它们的梯度具有一定的价值。

另一方面,偏差的梯度和值都在变化。

这是 TensorBoard 上的权重和偏差分布。第一行显示梯度,第二行显示权重/偏差的值。

在此处输入图像描述

这是我用来训练网络的代码

optimizer = tf.train.AdamOptimizer(learning_rate, beta_1)
grads = optimizer.compute_gradients(total_loss)            # returns grads and vars
train_op = optimizer.minimize(total_loss)

以及 TensorBoard 上的直方图。

for g in grads:
    tf.summary.histogram('{}'.format(g[1].name), g[1], family='weights')
    if g[0] is not None:
        tf.summary.histogram('{}'.format(g[1).name), g[0], family='gradients')

我认为'weights/conv1/kernels''weights/conv2/kernels'应该改变。

(其实我的网络有2层以上。cnn层有9层,只有最后一个卷积层的权重变化。)

这样的结果自然吗?还是我滥用了optimizer.compute_gradients

标签: tensorflowgradienttensorboard

解决方案


推荐阅读