本文主要是介绍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.
所以如果是二分类问题,则
这篇关于caffe使用FCN时,训练loss总是保持不变的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!