一、基本用法:
np.random.uniform
是 NumPy 库中的一个函数,用于生成服从均匀分布的随机数。分布指的是在指定的区间内,每个数值都有可能的概率被生成。
该函数的语法如下:
numpy.random.uniform(low, high, size)
其中各参数的含义如下:
low
:指定均匀分布的下限(包含在内),生成的随机数可能很简单。high
:指定均匀分布的上限(不包含元素),生成的随机数可能的峰值。size
:生成随机数的数量或队列的形状。
示例用法:
import numpy as np
# 生成一个均匀分布的随机数
random_number = np.random.uniform(0, 1) # 生成一个[0, 1)范围内的随机数
print(random_number)
# 生成一个均匀分布的随机数组
random_array = np.random.uniform(1, 10, size=(3, 3)) # 生成一个3x3的随机数组,数值范围在[1, 10)内
print(random_array)
# 生成多个均匀分布的随机数
random_numbers = np.random.uniform(-1, 1, size=5) # 生成5个在[-1, 1)范围内的随机数
print(random_numbers)
输出的结果:
0.6789002454746836
[[9.65227333 3.90138639 3.99443401]
[7.78658707 7.36479127 3.13626846]
[4.75617731 4.76864633 5.91985693]]
[ 0.76884237 0.92208931 0.95698109 -0.86372451 -0.9464821 ]
np.random.uniform
一般用于生成一组满足均匀分布的随机数,它在模拟和随机采样等任务中经常有用。请注意,生成的随机数范围是半开区间,即包含下限,但不包含low
上限high
。
二、实战代码举例:
在用MNIST数据集进行超参数的最优化过程中超参数的随机采样的代码如下所示。
weight_decay = 10 ** np.random.uniform(-8, -4)
lr = 10 ** np.random.uniform(-6, -2)
代码用于生成两个超参数的值:weight_decay
和lr
。这些超参数通常在机器学习和深度学习中用于调整模型的行为。代码的具体作用:
-
np.random.uniform(-8, -4)
:这部分代码使用 NumPy 的np.random.uniform
函数生成一个位于-8
及其-4
之间的随机浮点数。这个随机数的范围是从 10 的负 8 次方到 10 的负 4 次方之间,它通常被用来正则化(重量衰减)超参数。正则化是一种降低模型复杂度的技术,防止模型过建模。 -
np.random.uniform(-6, -2)
:模仿上面的代码,这部分代码生成了一个位于-6
和-2
之间的随机浮点数。这个随机数的范围是从10的负6次方到10的负2次方之间,它通常被用来学习学习率(learningrate)超参数。学习率控制了模型在每次迭代中更新参数的步幅,是训练深度学习模型时需要调整的关键超参数。
通过这些随机生成的超参数值,可以进行超参数搜索(超参数调整),尝试不同的超参数组合来找到模型的最佳配置。这是一种常见的做法,用于优化模型的性能。在每个次迭代中,使用不同的超参数值来训练模型,然后根据模型在验证集上的性能选择最佳的超参数组合。