np.random.rand
是 NumPy 库中一个常用的函数,用于创建包含随机数(浮点数)的数组。
np.random.rand
详解
1. 核心功能
np.random.rand
生成的随机数服从**[0.0, 1.0) 范围内的均匀分布(Uniform Distribution)**。
- 均匀分布: 这意味着在这个范围内的任何值被生成的概率都是相等的。
- 范围: 包含 0.0,但不包含 1.0。
2. 用法
它最常见的用法是直接传入你想要的数组的维度作为参数。
语法: np.random.rand(d1, d2, ..., dn)
示例代码 | 数组形状 (Shape) | 描述 |
---|---|---|
np.random.rand(5) |
(5,) |
生成 5 个 0 到 1 之间的随机浮点数(一维数组)。 |
np.random.rand(2, 3) |
(2, 3) |
生成一个 2 行 3 列的数组,所有元素都是 0 到 1 之间的随机浮点数。 |
np.random.rand(4, 5, 6) |
(4, 5, 6) |
生成一个三维数组。 |
3. 在 Dropout 中的应用
在你实现的 Dropout
类中,np.random.rand
用于生成随机掩码来决定哪些神经元应该被丢弃:
# Dropout 类的 forward 部分
self.mask = (np.random.rand(*x.shape) > self.p)
这里的执行步骤是:
*x.shape
: 这会解包输入数据x
的形状(例如(200, 512)
)。np.random.rand(*x.shape)
: 生成一个与输入数据x
形状完全相同的数组,其中每个元素都是 0 到 1 之间的随机浮点数。> self.p
: 将这个随机数组中的每个元素与丢弃概率self.p
(例如 0.5)进行比较。- 如果随机数大于 0.5,结果为
True
(该神经元被保留)。 - 如果随机数小于等于 0.5,结果为
False
(该神经元被丢弃)。
- 如果随机数大于 0.5,结果为
self.mask
: 最终得到了一个与输入数据同形状的布尔型掩码,用于控制哪些神经元在训练时是激活的。