更多框架

本文介绍了Caffe、Torch、Tensorflow和MXNET四个深度学习框架。Caffe依赖Opencv、boost等库,采用基于层的设计,使用Protocol Buffer技术。Torch使用LUA语言,灵活易学,适合实验新网络。Tensorflow基于computation graphs,支持分布式训练。MXNET结合了图计算和过程模拟,更轻量级。
摘要由CSDN通过智能技术生成

关于框架

Caffe

依赖大量第三方库
为了读取图像,以及简单的图像处理,连接很重的Opencv库
boost来实现一些C++特征
HD5/LMDB/LEVELDB来做数据IO
ProBuffer使用随处可见

基于层的设计思路

Blob模块:实现了tensor功能,保存数据和梯度值
Layer模块:根据输入(bottom)blog计算输出(top)blog,同时保存权重/梯度
NET模块:有多个layer组成,实现forward/backward计算
SOLVER模块:最优化模块,利用梯度值更新权重

Protocol Buffer 技术

引入Protocol Buffer 技术,省去编写大量描述性的c++代码,比如配置参数,属性变量等等
方便序列化,用户可以直接阅读protext文件,来了解网络结构

prototxt .caffemodel文件

protxt描述网络,通过google的protobuffer编译器直接读取/序列化c++对象
caffemodel权重文件

caffe的训练

需要做数据准备,保存为LMDB/Leveidb格式
不用编写C++代码,直接编写.prototxt定义net对象
直接编写.protoxt定义net对象
通过参数直接执行caffe命令进行训练
第一部数据准备
准备数据文件:
通过tools/create命令产生LMDB/LEVEidb格式数据文件
第二步:编写网络文件
规则简单的,可以直接用文本编辑器生成
网络结构复杂的,利用python脚本生成
注意net protoxt文件描述的是有向无环图
复杂的网络
网络结构复杂:残差网路
层数比较多,手写非常低效
网络结构无法复用,prototxt不具备可编程性
第三步:定义solver文件
简单手动编写
第四步:训练

主要特点

技术细节全面采用c++实现
依赖proto buffer/boost开发库
gpu加速采用cuda开发
opencv仅仅是补充功能,非核心模块
Layer based
采用DSL定义网络结构
layer/blob/net/solver结构

Torch

最灵活最容易学习的深度框架

LUA语言

类似javascript动态语言,LuaJit性能高与大多数脚本语言
结合c语言开发非常简单,通过Luaffi直接调用c编写模块

主要特点

灵活的框架
使用Lua语言作为控制应用层,彻底模块化设计
友好的交互
快速学习深度学习中各个组件的功能
全程可控的训练过程
适合实验新的网络类型

Tensorflow

google研发
基于computer graphs计算模型
python/c++语言
tensorboard可视化工具
多机多卡支持

computation graphs

首先构造好整个计算链路
可以对链路进行优化
分布式调度容易实现

MXNET

与tensorflow类似,但在支持图计算的基础上,增加过程模拟,支持两种计算模型
比tensorflow更轻量
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值