下面是“np.random.seed() 的使用详解”的完整攻略:
1. 什么是 np.random.seed()
?
np.random.seed()
是 NumPy 库中的一个函数,它用来确定随机数生成器的种子,从而控制随机数生成的顺序和输出。通过使用 np.random.seed()
,我们可以使得随机操作变得可重复,即对于相同的种子,每次得到的随机数序列都是相同的。这在数据科学中非常有用,可以让我们随机地对数据进行采样、划分等操作,同时还能保证结果的可重复性。
2. np.random.seed()
的用法
np.random.seed()
函数需要传入一个整数参数作为种子,可以选择任何一个整数作为种子,但不同的种子会产生不同的结果,所以为了可重复性,我们通常选择固定一个种子来生成随机数。比如:
import numpy as np
np.random.seed(2021)
上面的代码中,我们选择种子为 2021,这个数任意选择即可。在这之后,我们就可以使用 NumPy 的随机数生成器,如 np.random.rand()
和 np.random.randn()
,它们将根据我们提供的种子生成相同的随机序列。
3. 示例说明
下面通过两个示例说明 np.random.seed()
的使用。
示例一:随机采样
我们使用 np.random.seed()
来选择固定一个种子,然后通过 np.random.choice()
随机采样一个列表中的元素。我们重复执行多次,每次得到的随机数序列是相同的。
np.random.seed(2021)
my_list = ['a', 'b', 'c', 'd', 'e']
for i in range(3):
print(np.random.choice(my_list, size=3))
输出:
['b' 'e' 'a']
['b' 'e' 'c']
['c' 'e' 'b']
示例二:随机初始化权重
在机器学习中,我们经常需要随机初始化神经网络的权重。使用 np.random.seed()
可以生成一组固定的随机数,这样我们每次运行训练时得到的神经网络权重是相同的,方便我们进行模型的调试、优化、比较等。
比如下面的代码中,我们将使用种子为 2021 的随机数来初始化一个输入和输出大小分别为 3 和 2 的权重矩阵:
np.random.seed(2021)
W = np.random.randn(3, 2)
print(W)
输出:
[[-0.75049791 0.67072189]
[-0.30973198 -0.44299749]
[-0.0339261 0.85007014]]
我们可以再次运行上面的代码,得到相同的结果。这保证了每次运行时,我们都使用相同的权重进行训练,避免了由于随机数的随机性导致的模型不可重复的情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:np.random.seed() 的使用详解 - Python技术站