gpt4 book ai didi

tensorflow - Tensorflow 上的全卷积网络(FCN)

转载 作者:行者123 更新时间:2023-12-03 10:01:56 27 4
gpt4 key购买 nike

我正在尝试在 tensorflow 上重新实现 FCN。我已经实现了反卷积层。

up8_filter = tf.Variable(tf.truncated_normal([64, 64, 21, 21]))
prob_32 = tf.nn.conv2d_transpose(score, up8_filter, output_shape = [batch_size, 224, 224, 21], strides = [1, 32, 32, 1])
tf.histogram_summary('fc8_filter', up8_filter)

训练看起来很好,损失值一直在下降,直到变成 Nan。我检查了张量板,它表明 up8_filter 似乎有分歧。

enter image description here

Tensorflow 中有没有办法对权重值进行正则化?
我尝试了以下方法

  1. 学习率较低
  2. 零均值图像

我没有按照 FCN 实现将图像填充到 100 像素,因为 Tensorflow conv2d 不支持它。我使用 caffe-tensorflow 转换了 VGG 权重,我无法改变它的网络结构。

对于这个令人困惑的问题,我很抱歉,有很多事情要出错,我不知道从哪里开始。

损失值的片段。

Step 1: loss = 732171599872.00
Step 10: loss = 391914520576.00
Step 20: loss = 32141299712.00
Step 30: loss = 1255705344.00

[更新]:

损失函数损失32

 loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(
tf.reshape(prob_32, [batch_size*224*224, 21]),
tf.reshape(lbl_ph, [-1]) ))

[更新2]

我听从了 ziky90 的建议,它奏效了。训练现在收敛,反卷积过滤器似乎停止发散。我将报告 agian 的准确性。

最佳答案

也看看我的 Tensorflow FCN implementation .使用此 loss function 时训练有效结合 this训练脚本。

以下是我在实现 FCN 时获得的一些见解。

  1. deconv 过滤器需要初始化为双线性。
  2. tf.nn.sparse_softmax_cross_entropy_with_logits 可以使用,但在某些情况下会导致数值不稳定。另见 Tensorflow issue .因此,我决定使用张量运算来实现交叉熵。
  3. 在使用大图像时(这会导致 softmax 批处理 变大),降低训练率很有用。 Adam 优化器与 1e-6 的学习率相结合似乎很有用。

关于tensorflow - Tensorflow 上的全卷积网络(FCN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37065512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com