原文地址:lefenger.com
Caffe使用所遇到的问题。
一
当 caffe为训练模式时,dropout不执行。
二
layer
{
bottom: "a"
bottom: "b"
name: "conv1_1"
param
{
propagate_down : 0 //a不会得到梯度传播
propagate_down : 0 //b不会得到梯度传播
lr_mult: 0 # 学习率为0 //此层参数不会改变,可用于finetune
}
# set loss weight so Caffe knows this is a loss layer
loss_weight: 1 //告诉caffe这是一个loss层
}
三
transformer=caffe.io.Transformer({‘data’:[1,3,256,256]})
Transformer是一个图像预处理类,在io.py中可看到具体实现,这个类用于图像数据的预处理,最多只能为三维,这个类本身不存储数据,它存储的是预处理的方式,即处理的过程,它以键值对的形式存储预处理模板,一般先将所需要的预处理过程写好,再使用此类对数据进行预处理。这里需要注意的是[1,3,256,256]并不是处理之前的维度,而是处理之后的维度,即你想要得到的维度。
transformer.set_transpose(“data”,(2,0,1))
对维度进行变换 ,例如输入的维度为[422,412,3],则得出的结果为[3,256,256],其中操作分为两步,一是[422,412,3]->[3,422,412],二是根据[1,3,256,256]对维度进行缩放。
tranformer.set_channel_swap(‘data’,(2,1,0))
这个函数很容易与上个函数混淆,他们的区别在于,上个函数是对维度进行变换,而这个函数是对维度内部的行的顺序进行变换,比如在第某个维度的数据为[[1,2],[3,4]],那么在经过[1,0]的变换之后便变换为了[[3,4],[1,2]]。