np.random.seed(1000)
您好,np.random.seed(1000) 这行代码的意思是:设置 NumPy 伪随机数生成器的种子(Seed)。
它的核心作用是确保您代码中的随机性是可复现的(Reproducible)。
💡 为什么需要设置 Seed?
在深度学习中,很多操作都涉及随机性:
- 权重初始化:
np.random.normal()或np.random.rand()等函数用于随机初始化模型的权重(您代码中的Linear层)。 - Dropout: 在训练过程中随机失活神经元(您的
Dropout层)。 - 数据打乱: 在每个 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) 就像给您的随机过程一个固定的起点,保证您的实验结果稳定可靠。

浙公网安备 33010602011771号