分享

三、深度学习Pytorch Caffe Keras等

 Behindrain 2018-06-20
一、caffe

Blob:是基础的数据结构,是用来保存学习到的参数以及网络传输过程中产生数据的类。  
Layer:是网络的基本单元,由此派生出了各种层类。修改这部分的人主要是研究特征表达方向的。   
Net:是网络的搭建,将Layer所派生出层类组合成网络。Solver:是Net的求解,修改这部分人主要会是研究DL求解方向的。 
solver:这个类中包含一个Net的指针,主要是实现了训练模型参数所采用的优化算法,它所派生的类就可对整个网络进行训练。

(1)Loss下降了,但是准确率没有明显变化?  训练前首先shuffle,其次学习率是否合适。数据集记得打乱,不然很可能不收敛;
(2)caffe中的数据增强,只发现mirror、scale、crop三种.
   https://github.com/kevinlin311tw/caffe-augmentation
   1)Geometric transform: random flipping, cropping, resizing, rotation
   2)Smooth filtering
   3)JPEG compression
   4)Contrast & brightness adjustment
(3)87.3365是个很特殊的数字,NAN经过SoftmaxWithLoss就产生了这个数字,所以就是你的FC8输出全是NAN; 检查数据集的标签是否是从0开始,base_lr调低了一个数量级,batch_size调高一倍。 
(4)数据集的类别号从0开始,中间要连续,否则会造成意外的错误
(5)如果出现不收敛的问题,可以把solver里的lr设的小一点,一般从0.01开始,如果出现loss=nan了就不断往小调整;
(6)可以把accuracy和loss的曲线画出来,方便设定stepsize,一般在accuracy和loss都趋于平缓的时候就可以减小lr了;
2.1.1 caffe和torch不支持使用16位计算。
2.1.2 WindowDataLayer(窗口数据),用于检测,可以读取hdf5数据。

2.1.3 Caffe中的交叉验证?
定义两个prototxt文件(训练阶段和测试阶段),train_val.prototxt和deploy.prototxt;后者用于测试集中,测试阶段的train_val.prototxt用于验证。
test_iter值:若batch size 值为100,而训练集合含有6000幅图片,测试集含有1000幅图片,则test_iter值为1000/10,与训练集的图片量无关。
2.2 其他框架?
Torch-->C和Lua语言写的,Torch中主要的是Tensors类
TensorFlow-->pip安装,TensorBoard为可视化工具 ,支持多GPU,支持分布式训练(多机),支持RNN、Theano、MxNet、

二、Pytorch
1.初始化
(1)"fan_in"保留正向传播时权值方差的量级,"fan_out"保留反向传播时的量级。
比如pytorch的BN中默认的moving average decay是0.9,在caffe和tensorflow上是0.999。

2.扩展维度
.unsqueeze(0)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多