numpy中random.seed()的妙用
我们经常要用到下列语句用于生成随机数
import numpy as np
print (np.random.random())
就神经网络而言,weights一般都初始化为一个正太分布,但我们知道,神经网络的性能是与初始值有很大相关的,那么可以想象这样一种情形,你在网络分享了一段代码,在你电脑里显示运行的结果是state-of-the-art,但别人在复现的时候发现效果却不那么理想,按理说程序都写死了,不应该会有差异的,仔细分析,其中一个原因就是生成随机数时的不确定性,那么下面的这个trick就有助于解决这个问题.
方法就是numpy.random.seed()来指定随机数生成时所用算法开始的整数值,具体可以参考numpy.random.seed()的使用.
生成一个测试文件test.py:
import numpy as np
np.random.seed(5)
print (np.random.random())
print (np.random.random())
运行文件python test.py,得到下列结果:
0.22199317108973948
0.8707323061773764
再次运行python test.py,得到下列结果:
0.22199317108973948
0.8707323061773764
可以看到,两次的结果是一致的,说明这样使用就可以把随机数生成时的随机性都消除掉了,这样所有人的结果都是一致的.
对你个人有什么好处呢,使用神经网络中一个必不可少的工作就是调参,但是如何保证参数调整过后,效果的提升是因为参数还是因为一个更好的初始值呢(跳进了一个更快更快的迭代位置),此时使用nump.random.seed()来指定就行了,这样程序带来的不确定性就消除了.
转自:https://zhuanlan.zhihu.com/p/39236608

浙公网安备 33010602011771号