np.random.rand

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)

这里的执行步骤是:

  1. *x.shape 这会解包输入数据 x 的形状(例如 (200, 512))。
  2. np.random.rand(*x.shape) 生成一个与输入数据 x 形状完全相同的数组,其中每个元素都是 0 到 1 之间的随机浮点数。
  3. > self.p 将这个随机数组中的每个元素与丢弃概率 self.p(例如 0.5)进行比较。
    • 如果随机数大于 0.5,结果为 True(该神经元被保留)。
    • 如果随机数小于等于 0.5,结果为 False(该神经元被丢弃)。
  4. self.mask 最终得到了一个与输入数据同形状的布尔型掩码,用于控制哪些神经元在训练时是激活的。
posted @ 2025-09-27 13:39  李大嘟嘟  阅读(10)  评论(0)    收藏  举报