caffe使用FCN时,训练loss总是保持不变的问题
使用原作者分享出来的FCN版本进行训练,如果直接使用.prototxt文件在caffe上训练,会出现loss基本保持不变的问题。
这种问题的产生是因为原作者搭建网络时设置的问题,即初始化的问题:
layer {
name: "upscore_pool4"
type: "Deconvolution"
bottom: "fuse_pool4"
top: "upscore_pool4"
param {
lr_mult: 0
}
convolution_param {
num_output: 21
bias_term: false
kernel_size: 4
stride: 2
}
}
在定义Deconvolution层的时候
param {
lr_mult: 0 #不更新卷积核
}
bias_term: false #不添加偏置
convolution_param {
num_output: 21
bias_term: false
kernel_size: 4
stride: 2
} #没有指定卷积核的初始化方式,即所有权值为默认值0
这种定义Deconvolution的方式会导致所有的输出feature map均为0.
所以如果是二分类问题,则