学習経験の共有 [NO.17] YOLO トレーニング中のランダムシードを修正

       深層学習ネットワーク モデルの初期重みパラメーターは通常、乱数に初期化され、勾配降下法を使用して最終的に得られる局所最適解は、初期位置点の選択に非常に敏感です。著者のオープンソース深層学習コードを完全に再現するために、ランダム シードを選択すると、アルゴリズム結果のランダム性をある程度まで低減でき、元の著者の結果に近づくことができます。つまり、ランダム シードの生成は実験の実行を意味します。毎回同じ乱数を生成します。論文を確実に複製できるようにするために、次の方法を使用してランダム シードを修正できます。

困っている友達は、次のコードを train.py に挿入できます。

def seed_torch(seed=0):
    seed=0
    # torch.backends.cudnn.enabled = True  # pytorch 使用CUDANN 加速,即使用GPU加速
    torch.backends.cudnn.benchmark = False  # cuDNN使用的非确定性算法自动寻找最适合当前配置的高效算法,设置为False 则每次的算法一致
    torch.backends.cudnn.deterministic = True  # 设置每次返回的卷积算法是一致的
    torch.manual_seed(seed)  # 为当前CPU 设置随机种子
    torch.cuda.manual_seed(seed)  # 为当前的GPU 设置随机种子
    torch.cuda.manual_seed_all(seed)  # 当使用多块GPU 时,均设置随机种子
    np.random.seed(seed)
    random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)

おすすめ

転載: blog.csdn.net/m0_70388905/article/details/128505796