几天无聊,看darknet的源码
1. 学习率
训练的时候看到输出信息没有learning rate, 进代码看看,发现 network.c 里面的get_current_rate(net) 就是获取学习率的,打印出来的rate就是lr啦
另外,训练densenet的时候,先burning_in=1000batch, 学习率由0 逐渐升为 初始的学习率
另外,net.seen 是多张张图,训练每个batch 多少找图,net.seen 就是当前batch 加载了多少张图
- route layer
看densenet 里面多次用到 route layer, 就进代码看看,主要看parser.c 和route_layer.c
我不明白作者为什么这么命名啦,不过我知道这一层是干嘛的
如果 out_h,out_w,out_c
1 conv 64, 64, 96
2. ...
3. conv 64, 64, 32
4. route -1,-3
其实就是 route 3, 1
这一层其实就是concate层, 输出为 64,64,(96+32=128)
下面是parse_route的部分
convolutional_layer first = net.layers[layers[0]];
layer.out_w = first.out_w;
layer.out_h = first.out_h;
layer.out_c = first.out_c;
for(i = 1; i < n; ++i){
int index = layers[i];
convolutional_layer next = net.layers[index];
if(next.out_w == first.out_w && next.out_h == first.out_h){
layer.out_c += next.out_c;
}else{
layer.out_h = layer.out_w = layer.out_c = 0;
}
}
- densenet
看了最近darknet 更新了imagenet的 网络,densenet201,
- 网络设计
我看了我改的resi-block, 和densenet,以及ICIP看到的ROR, 设计区别如下
感觉这些东西,网络框架自己改改,肯定能弄出更小更好的,就是GPU不给力啊,训练一次imagenet 估计要12天