tensorflow - 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
?
解决方案
推荐阅读
- amazon-ec2 - Terraform 无法远程执行 (aws/ec2)
- reactjs - 删除所有数据后,使用 map 函数存储 id 不会变为 null
- python-3.x - 在 PyQt5 中查看图像的 4 种方法
- java - 有没有办法将带有子字符串的 JTextField 拆分成双精度?
- javascript - Javascript:从 2 个数组中查找不匹配的对象
- linux - 端口映射的 IO 读取值与写入值不同
- python - 实时绘制日期
- java - 如何通过 Jackson YAML Mapper 使用 @JsonSubTypes 进行多态类型处理
- c# - 查找并更新
- docker - 如何修复错误“复制失败:stat /var/lib/docker/tmp/docker-builder/public:没有这样的文件或目录”