深度学习框架笔记

Caffe:
依赖大量第三方库,为了读取图像,以及简单的图像处理,链接很重的opencv库
boost来实现一些C++ 11的特征
HD5/LMDB/LEVELDB用来做数据的IO
基于层(过程)的设计思路
blob模块:实现了tensor的功能,保存数据的梯度值
layer模块:根据输入(bottom)blob计算输出(top)blob,同时保存权重/梯度
Net模块:由多个layer组成,实现forward/backward计算
slover模块:最优化模块,利用梯度值更新权重
protocol buffer:
引入potocol buffer技术,省去编写大量描述性的C++代码,比如配置参数,属性变量等,方便序列化,用户可以直接阅读prototxt文件,来了解网络结构
prototxt.caffemodel文件:
prototxt描述网络,通过Googel的Protobuffer编译器直接读取/序列化C++对象
Caffe的训练:
需要提前做数据准备,保存为LMDB/LevelDB等格式
不用编写C++代码,直接编写.prototxt定义net对象
直接编写.prototxt定义solver对象
通过参数直接执行caffe命令进行训练
第一步:数据准备
准备数据文件:xx/xx/xx.jpg label ##每行都是这样的格式
通过tools/creat_xxxx命令生成LMDB/LevelDB等格式的数据文件
第二步:编写网络文件
规则简单的,可以直接用文本编辑器生成
网络结构复杂的,利用python脚本生成
第三步:定义solver文件
简单手动编写
设置好需要的参数
第四步:训练
主要特点:
技术细节全面采用C++实现
依赖protobuffer/boost开发库
GPU加速采用CUDA开发
Opencv/LMDB等仅仅是补充功能,并非核心模块

Torch:
Lua语言:性能高于大多数脚本语言,结合C语言开发非常简单,通过LuaFFI直接调用C编写的模块
所见即所得的友好的交互环境,最灵活最容易学习的深度学习框架
基于”nn”软件包生成各种网络:require(‘nn’)
GPU/CPU切换:
require(‘cutorch’),require(‘cunn’),切换tensor类型
利用optim模块
主要特点:
灵活的框架:使用Lua语言作为控制应用层,彻底的模块化设计
友好的交互:快速学习深度学习中各个组件的功能
全程可控的训练过程:适合实验新的网络类型

Tensorflow:
Google研发/主推
基于computation graphs计算模型
Python/C++语言
TensorBoard 可视化工具
多机多卡支撑
Computation graphs VS layer base:
Computation graphs:
首先构造好整个计算链路,可以对链路进行优化
分布式调度容易实现
调试网络困难
layer base:
每层的计算,固定实现forward/backward
必须手动指定目标GPU卡
调试网络简单

MxNet:
和TensorFlow类似,但在支持图计算基础上,增加了过程模型,即支持两种计算模型
比TensorFlow更为轻量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值