Caffe使用经验积累

本贴记录Caffe编译好了,使用过程的常用命令与常见错误解决方式。如果对编译过程还存在问题,请参考史上最全的caffe安装过程配置Caffe环境。

1 使用方法

训练网络

xxx/caffe/build/tools/caffe train --solver xx/solver.prototxt

选择某个模型作为预训练模型

xxx/caffe/build/tools/caffe train --solver solver.protxt --weights pre_training.caffemodel

继续之前的状态续训

xxx/caffe/build/tools/caffe train --solver solver.protxt --snapshot=train_iter_95000.solverstate

画出网络结构

python /caffe/python/draw_net.py train_alex.prototxt alexnet.png

选择多gpu进行训练

xxx/caffe/build/tools/caffe train --solver xx/solver.prototxt --gpu=0,1

设置系统环境变量使所需GPU可见

export CUDA_VISIBLE_DEVICES=1

训练log保存

nohup xxx/caffe/build/tools/caffe train –solver solver.prototxt	&
tail –f output

查看log中训练loss的值

cat output.log | grep "Train net output" | awk '{print $11}' > loss.log

其中,awk的 ‘{print $11}’ 是用来截取串中的第11个子串

2 常见使用过程报错含义

(1) errror: Check failed: error == cudaSuccess (2 vs. 0) out of memory

说明GPU内存不够用了,减少batch_size即可,参考

(2) error: ImportError: No module named pydot when python draw_net.py train_val.prototxt xxx.png

使用draw_net.py画图时所报的错误,需要安装graphviz

pip install pydot
pip install GraphViz
sudo apt-get install graphviz

(3) error: Cannot copy param 0 weights from layer 'fc8'; shape mismatch.

Source param shape is 5 4096 (20480); target param shape is 1000 4096 (4096000). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.

出现这个问题一般是层与层的之前blob维度对应不上,需要改prototxt

change deploy.prototxt	adapt to train_val.prototxt

(4) error: Use hdf5 as caffe input, error: HDF5Data does not transform data

transform_param { scale: 0.00392156862745098 }

这句是说如果HDF5作为输入图像,不支持scale操作,把它注释就好了

Reference

(5) error: Loading list of HDF5 filenames from: failed to open source file

Read hdf5 data failed:

  1. source中 .txt位置用绝对路径
  2. .txt中.h5文件的要用绝对路径
  3. .prototxt中应该是:hdf5_data_param {}而非data_param{}

(6) error: Top blob 'data' produced by multiple sources.

检查数据输入层是不是多了 一层,比如定义了两遍’data’

(7) Error: Check failed: shape[i] >= 0 (-1 vs. 0)

  1. 数据维度顺序不对, blobs的顺序: [ 图像数量 N *通道数 C *图像高度 H *图像宽度 W ]
  2. kernerl size 与 feature map的大小不对应

(8) Error: Check failed: outer_num_ * inner_num_ == bottom[1]->count() (128 vs 128x51)

这层是accuracy layer出现的问题,检测accuracy的两个bottom的维度是否对应,实在解决不了的话,直接去掉。

[Caffe]使用经验积累的更多相关文章

  1. git日常使用经验积累

    1 git merge origin/develop 将远程分支合并到本地,一般先执行合并,解决冲突,然后再git commit合入新建的分支,推送到远程分支里面,最后码云上找pl pull requ ...

  2. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  3. 安装Caffe纪实

    第一章 引言 在ubuntu16.04安装caffe,几乎折腾了一个月终于成功;做一文章做纪要,以便日后查阅.总体得出的要点是:首先,每操作一步,必须知道如何检验操作的正确性;笔者的多次失误是因为配置 ...

  4. 转:TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比

    http://geek.csdn.net/news/detail/138968 Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步.自Tens ...

  5. caffe代码阅读10:Caffe中卷积的实现细节(涉及到BaseConvolutionLayer、ConvolutionLayer、im2col等)-2016.4.3

    一. 卷积层的作用简单介绍 卷积层是深度神经网络中的一个重要的层,该层实现了局部感受野.通过这样的局部感受野,能够有效地减少參数的数目. 我们将结合caffe来解说详细是怎样实现卷积层的前传和反传的. ...

  6. 基于window7+caffe实现图像艺术风格转换style-transfer

    这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...

  7. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  8. 《Effective Java》学习笔记——积累和激励

    从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...

  9. 基于Caffe的Large Margin Softmax Loss的实现(中)

    小喵的唠叨话:前一篇博客,我们做完了L-Softmax的准备工作.而这一章,我们开始进行前馈的研究. 小喵博客: http://miaoerduo.com 博客原文:  http://www.miao ...

随机推荐

  1. NLP —— 图模型(零):EM算法简述及简单示例(三硬币模型)

    最近接触了pLSA模型,该模型需要使用期望最大化(Expectation Maximization)算法求解. 本文简述了以下内容: 为什么需要EM算法 EM算法的推导与流程 EM算法的收敛性定理 使 ...

  2. (转)Maven使用

    MAVEN3--(一)关于MAVEN 博客分类: MAVEN3   1.简介 MAVEN是Apache开源组织中的一个跨平台的项目管理工具. 主要功能有项目构建.依赖管理以及项目信息管理. 2.项目构 ...

  3. HDOJ2003-求绝对值

    Problem Description 求实数的绝对值.   Input 输入数据有多组,每组占一行,每行包含一个实数.   Output 对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果 ...

  4. Hibernate 中 简便proxool连接池配置

    资源&文档 请百度云盘下载:http://pan.baidu.com/s/1hsmVVBu     提取码y966

  5. Swift 细节

    1.swift ?和 !的区别 1.1 Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使 ...

  6. ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存

    一.Redis是什么? redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset ...

  7. 从Javascript单线程谈Event Loop

    假如面试回答js的运行机制时,你可能说出这么一段话:"Javascript的事件分同步任务和异步任务,遇到同步任务就放在执行栈中执行,而碰到异步任务就放到任务队列之中,等到执行栈执行完毕之后 ...

  8. Java微信公众平台开发之扫码支付模式一

    官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了大体过程:先扫码(还没有确定实际要支付的金额),这个码是商品的二维码,再生 ...

  9. QT 延时函数设置

    QT 的延时函数分为非阻塞延时 和 阻塞型延时 非阻塞延时: void GreenPass3::delaymsec(int msec){    QTime dieTime = QTime::curre ...

  10. 从Google Play下载应用并不安全,上千款监视软件伪装其中

    如果你认为在官方应用市场里下载app就觉得安全的话,小编可以负责任的回答你:"too young too simple,sometimes native" 今年4月,BankBot ...