一、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) |
|
来自: Behindrain > 《秋招面试题准备》