为什么我的Tensorflow FCN失败

问题描述:

我在张量流上实现了“用于语义分割的完全卷积网络”。然而,我的实现不能学习任何有意义的东西,并且总是导致所有0预测或南值的崩溃。为什么我的Tensorflow FCN失败

我尝试了所有我学到的技巧,清除了Caffe和Tensorflow之间的所有区别。我几乎不知道现在可能会出错的地方。

link to code

@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", 
+0

嗨,我的代码确实是一团糟。我重构了他们的高招,并希望它有助于可读性。 – 24hours

一两件事: 在你的转置卷积功能调用你缺少填充的说法。我想知道没有填充如何工作。 在任何情况下,您必须设置padding =VALIDpadding = SAME,同时呼叫tf.nn.conv2d_transpose

希望这会有所帮助!

+0

'conv2d_transpose'中'padding'的默认值是'same'。由于Tensorflow没有像Caffe那样的“CROP”图层,因此我选择维护图层。最后,fcn在固定大小的图像上对付Tensorflow。 – 24hours