ERNIE:当你神经网络好不容易搭完后,启动它要做的第一件事是什么?
BERT:emm......当然是把参数矩阵中塞满随机数啦(`・ω・´)。可是我懒得写循环......
ERNIE:没事,咱俩一开始时,参数矩阵就都是随机数啦,或许也包括我现在说的这句话。
基础np随机数生成函数
numpy有一个random子库,用法与python原本的random库差不多,调用时记得加上random:np.random.<方法>
IDE测试
>>> np.random.rand(3,3) #生成一个3*3的随机数矩阵
array([[0.28034402, 0.7632137 , 0.77616993],
[0.67435242, 0.17635725, 0.48415525],
[0.6530347 , 0.33255404, 0.44074308]])
>>> np.random.randn(3,3) #矩阵元素符合正态分布
array([[ 0.19233304, 0.85012517, 1.17034056],
[-0.30448713, -2.2180847 , -0.09353092],
[ 0.5803468 , 0.59346808, -0.60543587]])
>>> np.random.randint(0,10,(3,3)) #每个元素都是范围在[0,10)的随机整数
array([[0, 1, 3],
[7, 5, 5],
[0, 9, 1]])
>>> np.random.seed(10) #通过设定同一个随机数种子,可以使得生成的随机数完全相同
>>> np.random.randint(100,200,(3,4))
array([[109, 115, 164, 128],
[189, 193, 129, 108],
[173, 100, 140, 136]])
>>> np.random.randint(100,200,(3,4))
array([[116, 111, 154, 188],
[162, 133, 172, 178],
[149, 151, 154, 177]])
>>> np.random.seed(10)
>>> np.random.randint(100,200,(3,4))
array([[109, 115, 164, 128],
[189, 193, 129, 108],
[173, 100, 140, 136]])
np的高级随机数函数
IDE测试
>>> a = np.random.randint(100,200,(3,4))
>>> a
array([[116, 111, 154, 188],
[162, 133, 172, 178],
[149, 151, 154, 177]])
>>> np.random.shuffle(a) #只对a的第一个轴(0轴,即axis=0)洗牌
>>> a
array([[116, 111, 154, 188],
[149, 151, 154, 177],
[162, 133, 172, 178]])
>>> np.random.shuffle(a) #我们洗了两次牌,可以看到只有列方向的三个元素之间交换了元素
>>> a
array([[162, 133, 172, 178],
[116, 111, 154, 188],
[149, 151, 154, 177]])
随机数函数的展示不够直观,需要使用可以自己尝试
概率分布函数
IDE测试
>>> a = np.random.uniform(0,10,(3,4))
>>> a
array([[3.7334076 , 6.74133615, 4.41833174, 4.34013993],
[6.17766978, 5.13138243, 6.50397182, 6.01038953],
[8.05223197, 5.21647152, 9.08648881, 3.19236089]])
>>> a = np.random.normal(10,5,(3,4))
>>> a
array([[ 8.66341406, 7.25345493, 10.66354148, 7.61928993],
[16.5423654 , 10.9750664 , 12.00104994, 8.31183831],
[16.28236132, 6.34015249, 13.30115776, 8.24564054]])
相关知识请米娜桑参考概率论与数理统计