np.random.seed(1000)

您好,np.random.seed(1000) 这行代码的意思是:设置 NumPy 伪随机数生成器的种子(Seed)。

它的核心作用是确保您代码中的随机性是可复现的(Reproducible)


💡 为什么需要设置 Seed?

在深度学习中,很多操作都涉及随机性:

  1. 权重初始化: np.random.normal()np.random.rand() 等函数用于随机初始化模型的权重(您代码中的 Linear 层)。
  2. Dropout: 在训练过程中随机失活神经元(您的 Dropout 层)。
  3. 数据打乱: 在每个 Epoch 开始时打乱数据集(您的 DataLoader 中的 shuffle=True)。

如果没有设置 seed,每次运行程序时,这些随机操作都会生成不同的随机数。

场景 不设置 seed 设置 seed (np.random.seed(1000))
您自己运行 每次运行,模型的初始权重都不同,训练结果(准确率、损失)也会有差异。 无论您运行多少次,模型的初始权重和所有随机操作的序列都是完全相同的。
分享给他人 他人无法复现您的精确结果。 保证了实验的可复现性,他人可以得到与您完全相同的训练结果。

🔍 原理

计算机生成的随机数其实是伪随机数。它们是通过一个复杂的数学公式计算出来的,这个公式的起始值就是种子(Seed)

  • 当您调用 np.random.seed(1000) 时,您将起始值设为了 $1000$。
  • 从那一刻起,所有后续的 np.random 调用都会从 $1000$ 开始,按照相同的序列生成随机数。

所以,np.random.seed(1000) 本身并不生成随机数,它的作用是控制后续随机数的生成过程。


🔧 如何在您的代码中使用?

为了保证您的整个框架(包括权重初始化、Dropout、数据打乱等)都可复现,您应该将这行代码放在程序的最开始

import numpy as np
# ... 其他导入

# 放在所有涉及随机操作的代码之前
np.random.seed(1000) 
# 注意:在较新的版本中,您可能还需要设置 Python 自身的 random 模块和操作系统的哈希种子,
# 但对于 NumPy 为主的框架,设置 np.random.seed(1000) 是最关键的一步。

# ... 后续加载数据、定义模型、训练 ...

总结: np.random.seed(1000) 就像给您的随机过程一个固定的起点,保证您的实验结果稳定可靠。

posted @ 2025-10-09 16:49  李大嘟嘟  阅读(15)  评论(0)    收藏  举报