一、Caffe:图像的一般问题Caffe很方便,是目前产品化最多的库
1.来源于Berkeley的开源框架
根据Linux版本网上找寻相应配置方式,不推荐windows上安装 2.高效、一般的训练无需手写大量代码
① Resize图片,转换存储格式(LMDB/LevelDB) ② 定义网络结构(编辑prototxt) ③ 定义solver(编辑另一个prototxt) ④ 一行命令开始训练(可以基于已有的权重赋值) 3.有python和mathlab的接口 4.对于卷积神经网络的训练和fine-tuning非常方便
5. Caffe使用方法
① 转化格式 ② 定义层次结构 ③ 定义solver ④ 训练
6.模型库首选:model zoo-----适用AlexNet、VGG、GoogLeNet、ResNet
7.关于fine-tuning:如果层次不变,只需修改输入输出;如果层次改变,添加/删减层次
8.fine-tuning技巧/注意点:
①优先学习权放在新加层 Ø每一层都有控制学习率的参数: blobs_lr Ø 一般会把前面层学习率调低,最后新加层调高 Ø 你甚至可以freeze前面的层次不动 Ø一般fine-tuning的前期loss下降非常快,中间有个瓶颈期,要有耐心 ② 在solver处调整学习率 Ø调低solver处的学习率(1/10, 1/100) Ø记住存储一下中间结果,以免出现意外
9. Pycaffe:
①Import caffe加载库
Ø caffe.net是加载/运行/训练模型的主类(接口) Ø caffe.Classifier和caffe.Detector是针对识别/检测的接口 Ø caffe.SGDSolver最优化 Ø caffe.io负责输入输出和预处理 Ø caffe.draw可以画出网络结构图
② 加载所需库
③ 选择GPU或者CPU ④ 定义网络结构
⑤ 载入solver
⑥ Solver训练
⑦ 做完前向运算取出某层输出
二、Tensorflow:社区发达资源多
1. 概念------在Tensorflow里:
o 使用张量(tensor)表示数据. o 使用图(graph)来表示计算任务. o 在被称之为会话(Session)的上下文 (context)中执行图. o 通过变量 (Variable)维护状态. o 使用feed和fetch可以为任意的操作(arbitrary operation)赋值或者从其中获取数据.
2.关于张量(Tensor)
o 张量可以用多维数组来表示 o Numpy vs Tensorflow
o Tensorflow需要显示地输出tensor
3. Tensorflow的“计算图”
o Tensorflow一般可分为2部分:1)构造部分,包含计算流图 2)执行部分,通过session来执行图中的计算 o 构建图:1)创建源节点(source op) 2)源节点输出传递给其他节点(op)做运算 o TF默认图: 1)TensorFlow Python库有一个默认图(default graph) 2)节点构造器(op构造器)可以增加节点
3. Tensorflow的“会话”
4. Tensorflow的“变量”
5. 关于多GPU/CPU
6. TensorBoard可视化
三、facebook的Pytorch + caffe2:研究+产品应用组合
高速计算、自动求导
MxNet:对显存利用率高