用自制数据训练修改过的基于caffe的fcn网络时loss在一个较大值震荡的解决方法
来源:互联网 发布:剑灵天族女捏脸数据韩 编辑:程序博客网 时间:2024/06/06 03:29
基于caffe的fcn网络训练自制数据时loss在一个较大值震荡的解决方法
用自己数据训练修改后的fcn网络,可能会遇到loss在一个较大值附近震荡。通过查询资料和借助网络资源,初步有两个比较好的方法来处理这个问题;训练网络时初始化权重对训练的影响比较大。做过这样的测试,训练网络数据利用默认初始化方式,loss降到一个较大值附近就不下降了。通过已有网络赋值,或者其他初始化权重方式可以获得不错的训练效果。具体操作如下
1.就是利用已有的网络来初始化网络权重,具体修改solve.py文件是
import caffe
import surgery, score
import numpy as np
import os
import sys
try:
import setproctitle
setproctitle.setproctitle(os.path.basename(os.getcwd()))
except:
pass
weights = '../ilsvrc-nets/fcn32s-heavy-pascal.caffemodel'
vgg_weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'
vgg_proto = '../ilsvrc-nets/VGG_ILSVRC_16_layers_deploy.prototxt'
weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'
# init
caffe.set_device(0)
caffe.set_mode_gpu()
solver = caffe.SGDSolver('solver.prototxt')
#solver.net.copy_from(weights)
vgg_net=caffe.Net(vgg_proto,vgg_weights,caffe.TRAIN)
surgery.transplant(solver.net,vgg_net)
del vgg_net
# surgeries
interp_layers = [k for k in solver.net.params.keys() if 'up' in k]
surgery.interp(solver.net, interp_layers)
# scoring
val = np.loadtxt('F:/data/paopao/seg11valid.txt', dtype=str)
for _ in range(25):
solver.step(4000)
score.seg_tests(solver, False, val, layer='score')
2.在net.py修改网络初始化权重方法,我选用的是具体是
weight_filler=dict(type='xavier')
bias_filler=dict(type='constant',value=0)
Deconvolution层用的是
weight_filler=dict(type='gaussian',std=0.01),
bias_filler=dict(type='constant',value=0.1),
之后再生成训练和测试的prototxt文件。
网络中有个offset的计算参考
https://zhuanlan.zhihu.com/p/22976342
修改的文件放在了这里,需要的可以下载:
http://download.csdn.net/download/xuezhi1001/10102789
- 用自制数据训练修改过的基于caffe的fcn网络时loss在一个较大值震荡的解决方法
- 基于caffe的fcn网络的训练
- Caffe 训练时loss等于87.33的原因及解决方法
- Caffe 训练时loss等于87.33的原因及解决方法
- Caffe 训练时loss等于87.33的原因及解决方法
- Caffe 训练时loss等于87.33的原因及解决方法
- Caffe 训练时loss等于87.33的原因及解决方法
- caffe训练网络时loss突然增大并维持在86.3333333的问题解决
- caffe在linux下绘制训练时的loss曲线
- 使用caffe-future完成FCN网络的训练
- caffe FCN网络的训练——以SIFT-Flow 数据集为例
- Caffe 训练出现 loss = 1.#QNAN 的解决方法。
- FCN制作自己的数据集、训练和测试 caffe
- FCN用自己的数据训练1
- 转:Caffe 训练时loss等于87.33的原因及解决方法
- caffe训练加BN层的网络时loss为87.3365的问题解决办法
- 使用caffe训练时Loss变为nan的原因
- 使用caffe训练时Loss变为nan的原因
- 使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval
- struts2.3升级到2.5
- [Unity3D]简单使用Protobuf-net(二)
- 上访者福音团契是一场社会救赎运动
- QChart画坐标轴
- 用自制数据训练修改过的基于caffe的fcn网络时loss在一个较大值震荡的解决方法
- Ubuntu16.04 中PHP7.0 安装pdo_mysql 扩展
- 前端开发工程师必读书籍推荐
- linux-0.11中setup.s详解 只是自己的想法
- vue ref scrollTop不起作用
- Android6.0动态权限申请
- 收藏一些常看的大神的博客
- Android studio快捷键
- Swing 事件处理流程图