本文主要是介绍darknet/YOLOV4 预训练时冻结参数,停止反向传播,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1.首先获取预训练模型
2.修改cfg文件
3.训练
平时我们在训练模型时,会利用预训练模型做迁移学习,但是有时候我们想前面的几层直接复用预训练模型的参数,然后只训练后面的几个网络层,这时候需要冻结前面几层的参数,停止反向传播。
1.首先获取预训练模型
darknet partial cfg/cspdarknet53.cfg cspdarknet53.weights cspdarknet53.conv.104 104
这样就获取了预训练模型的前面104层的参数。
2.修改cfg文件
在cfg文件中的104 layer后面增加参数:stopbackward=1
[convolutional]
batch_normalize=1
filters=1024
size=1
stride=1
pad=1
activation=mish
stopbackward=1
注意不用在每一层都增加这个参数,因为代码中backward_network_gpu函数里面是一个for循环,当设置stopbackward=1时,for循环直接break退出,前面的也就都不再学习。
3.训练
./darknet detector train cfg/yolov4_chw_dongjie.data cfg/yolov4_chw_dongjie2.cfg ../cspdarknet53.conv.104 -dont_show -gpus 1
这篇关于darknet/YOLOV4 预训练时冻结参数,停止反向传播的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!