训练FCN-VGG16s网络,使用的自己的数据集,在F1值达到0.6之后,一直没有变化,调节超参数一点作用都没有用,训练结果如下所示:
检查每一层的gradients,发现如下情况:
upscore的两层upfilters的趋势不对。检查了网络定义的地方,发现如下情况:
get_deconv_filter函数里面添加了如下两行:
# init = tf.truncated_normal(shape=weights.shape,mean=0.0,stddev=0.001)
# bilinear_weights = self.get_var(init,name,0,name+'_upfilters')
get_deconv_var函数里面也有初始化代码,如下所示:
initial_value1 = self.get_deconv_filter(filter_shape, upscale_factor,name)
# weights = self.get_var(initial_value1, name, 0, name + "_weights")
weights = self.get_var(initial_value1, name, 0, name + "_weights")
有可能造成upscore层的重复,导致会有两个upscore的权重和偏置,需要进行验证。