【问题标题】:YOLO - change parameters for multi gpuYOLO - 更改多 GPU 的参数
【发布时间】:2021-01-22 02:19:42
【问题描述】:

目标是使用多 GPU 训练 YOLO。根据Darknet AlexeyAB,我们应该先用单GPU训练YOLO进行1000次迭代,然后从节省的权重(1000_iter.weigts)开始用多GPU继续训练。那么,我们不需要更改.cfg 文件中的任何参数吗? 这是我使用单 GPU 训练模型时的.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,.1

AlexyAB 说:修改 .cfg “如果你得到 Nan”。就我而言,我没有得到 Nan,但我的损失在波动。当我们继续使用多 GPU 进行训练时,我们不应该改变什么吗?批?细分?学习率?老化?我们只需要使用相同的配置继续训练吗?

【问题讨论】:

    标签: deep-learning yolo


    【解决方案1】:

    您需要在这两种情况之间更改 burn_inmax_batchessteps,例如,如果您的最终目标是 500200,那么您的第一个 .cfg 文件应该有:

    burn_in=100
    max_batches = 50000
    policy=steps
    steps=40000,45000
    

    第二个文件是这样的:

    burn_in=1000
    max_batches = 500200
    policy=steps
    steps=400000,450000
    

    如果你得到一个楠according to this,你只需要更改learning_rate,那么你应该将learning_rate除以GPU的数量,然后将burn_in乘以相同的数字。

    【讨论】:

    • 感谢您的回复,但我看不到您的第二个 burin_in? 有任何变化。你忘了改还是怎么的?
    • 先做burn_in 100。
    • 其实默认burn_in=1000。那么,您的意思是将burn_in 增加到10 倍?如果 burn_in=1000 使用单 GPU,使用多 GPU 我应该将其更改为 burn_in=10000
    • 没必要,当我这样做的时候,我用 128 作为第一个,2048 作为第二个。
    • 您能解释一下为什么我们需要增加max_batches吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 2023-03-07
    相关资源
    最近更新 更多