为什么我的Tensorflow FCN失败
问题描述:
我在张量流上实现了“用于语义分割的完全卷积网络”。然而,我的实现不能学习任何有意义的东西,并且总是导致所有0预测或南值的崩溃。为什么我的Tensorflow FCN失败
我尝试了所有我学到的技巧,清除了Caffe和Tensorflow之间的所有区别。我几乎不知道现在可能会出错的地方。
答
@24小时
我很难潜入你的代码。
有一两件事可以帮助你如下:
我用这个代码片段在很多项目中监控我的所有训练的参数及其梯度。一个例子是this
代码提取所有训练的变量,循环过他们,并请求直方图
tvars = tf.trainable_variables()
grads = tf.gradients(cost, tvars)
gradients = zip(grads, tvars)
# The following block plots for every trainable variable
# - Histogram of the entries of the Tensor
# - Histogram of the gradient over the Tensor
# - Histogram of the grradient-norm over the Tensor
for gradient, variable in gradients:
if isinstance(gradient, ops.IndexedSlices):
grad_values = gradient.values
else:
grad_values = gradient
h1 = tf.histogram_summary(variable.name, variable)
h2 = tf.histogram_summary(variable.name + "/gradients", grad_values)
h3 = tf.histogram_summary(variable.name + "/gradient_norm",
答
一两件事: 在你的转置卷积功能调用你缺少填充的说法。我想知道没有填充如何工作。 在任何情况下,您必须设置padding =VALID
或padding = SAME
,同时呼叫tf.nn.conv2d_transpose
。
希望这会有所帮助!
+0
'conv2d_transpose'中'padding'的默认值是'same'。由于Tensorflow没有像Caffe那样的“CROP”图层,因此我选择维护图层。最后,fcn在固定大小的图像上对付Tensorflow。 – 24hours
嗨,我的代码确实是一团糟。我重构了他们的高招,并希望它有助于可读性。 – 24hours