我们的目标是用多GPU训练YOLO。根据Darknet AlexeyAB的说法,我们应该首先用单GPU训练YOLO 1000次迭代,然后再用保存权重的多GPU (1000_iter.weigts)继续训练。那么,我们不需要更改.cfg文件中的任何参数?这是我用单个图形处理器训练模型时的.cfg:
[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=16
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1AlexyAB说:修改.cfg“如果你得到了Nan”。在我的情况下,我不会得到Nan,但我的损失是波动的。当我们继续使用多GPU进行训练时,难道我们不应该做些改变吗?批处理?细分?learning_rate?burn_in?我们只需要继续使用相同的配置进行训练?
发布于 2021-01-23 09:55:25
您需要在这两种情况之间更改burn_in、max_batches和steps,例如,如果您的最终目标是500200,则第一个.cfg文件应具有以下内容:
burn_in=100
max_batches = 50000
policy=steps
steps=40000,45000第二个文件如下所示:
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000如果您得到的是Nan according to this,则只需更改learning_rate,然后将learning_rate除以GPU的数量,然后将burn_in乘以相同的数量。
https://stackoverflow.com/questions/65838473
复制相似问题