tensorflow:tensor—相当于N维的array或者list,维数可变,数据类型一旦定义不能改变
caffe:Blob—存储的数据可以看成N维的c数组,有(n,k,h,w)四个维数,一个blob里面有两块数据空间保存前向和后向求导数据
tensorflow: c++ / cuda / python
caffe: c++ / cuda
tensorflow: c++ / python
caffe: c++ / python / matlab
tensorflow: CNN / RNN / 等 通用机器学习模型
caffe: CNN
tensorflow: 中上等
caffe: 中等
tensorflow: 容易
caffe: 中等
tensorflow: 完备,改bug容易
caffe: 非常完备,能找到各种bug出错原因和解决办法,改bug非常容易
tensorflow: 符号计算方式,它的程序分为计算构造阶段和执行阶段,构造阶段是构造出computation graph(和数据流程图类似),执行阶段启动session的run来执行已经定义好的graph
caffe: 功能(过程)计算方式,它首先按照每一个大功能(可视化、损失函数、非线性激励、数据层)将功能分类并针对部分功能实现相应的父类,再将具体的功能实现成子类,或者直接继承Layer类,从而形成了XXXLayer的形式,最后将不同的layer组合起来就成了net
tensorflow: 不支持多机分布训练,支持多gpu,数据并行训练。通过调用 with tf.device(‘/gpu:2’) 表示接下来的操作要在gpu2上处理
caffe: 不支持多机分布训练,支持多gpu,数据并行训练。通过直接在执行指令后面加上 -gpu 0,1 来表示调用两个gpu0和1。
如何将卷积网络放在多gpu上训练:
tensorflow: 支持自动求导,反向传播无需自定义求解梯度
caffe: 需要用户自己写 C++或者 CUDA
网络每层Layer 定义两种运算
tensorflow: google痴情的铃铛写的,可用于语音识别或图像识别等多领域深度学习
caffe: 伯克利大学博士贾扬清写的,主要用于计算机视觉领域,在深度学习框架里开发较早