初学TF,参考了师兄的blog:http://blog.csdn.net/cham_3/article/details/71374444
TensorFlow的关键词主要有:
- 计算图
- 自动求导
- 并行计算
- 数据并行
- 模型并行
- 流水线并行
训练一个网络,需要思考或者准备的事情,包括:
(1)数据
a.数据预处理,数据增强等
Caffe做数据增强,在数据层指定crop,shuffle,mirror等几个参数就可以。
TF,可以通过tf.random_ crop(),tf.image.random_flip_left_right()等对图像进行增强
b.数据输入格式?
Caffe,提供Data,ImageData等几种数据数据格式,数据来源可以来自高效的数据库(LevelDB 和LMDB),也可以来自内存,或者磁盘的hdf5
TF的数据输入格式,主要就是三种,Feeding,从文件读取,预加载的数据
可以参考官方的文档。下次针对这个写一篇
https://www.tensorflow.org/programmers_guide/reading_data
(2)模型
如何定义一个合适的网络结构
Caffe在prototxt文件中写网络结构,通过type参数,指定不同的网络层。层之间的数据流动是以Blobs的方式进行。
TF除了可以调用tf.nn.**的网络层,也有tf.contrib.layers.**
(3)损失
Caffe的损失,写好的包括contrative loss,hingle loss,softmax loss等几种。若要增加新的损失函数,需要自己写好损失函数的梯度求导相关后向传播。
TF 可以自定义损失相关的计算操作,加入图,在喂数据之后,运行图,TF可以根据定义好的图节点(运算操作)进行自动梯度求导,完成损失函数对网络的训练。