为什么CPU需要设置随机数种子模型的训练结果将始终保持一致? 为什么计算机没有真随机
更新时间:2021-11-24 18:53:15 • 作者:LORA •阅读 8744
- 有关CPU产生随机数种子这一问题.
- 不同计算机上,使用相同的种子,获取的随机数序列是否一样
- 深度学习模型训练中随机种子指的是什么
- 萌新c语言中用随机数每次产生的都差不多,虽然不一样; 请大神看看代码哪里有问题,
有关CPU产生随机数种子这一问题.
CPU没时每刻都在产生随机数种子
这是谁说的???
CPU从来就不会产生随机数种子
只不过是大部分的编程语言,会将CPU的时钟作为一个随机种子,所以你才每时每刻都可以获得一个不同的随机数
所以,只有你在获得随机数的时候,才有种子的概念,你只要不获取随机数,就永远不会有随机种子
至于种子的规律,这个没啥意思,因为你可以用任意一个数做种子,种子是自己确定的,你想要有什么规律就是什么规律
不同计算机上,使用相同的种子,获取的随机数序列是否一样
肯定不一样的
深度学习模型训练中随机种子指的是什么
楼上的回答不够确切,严格来说不对
事实上随机种子和深度学习没有直接关系,随机种子在百度百科中的定义是:一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。
简单的说,计算机中生成随机数的过程并不随机,但是其初始数(种子)是随机的。
在深度学习中,(比如深度神经网络)我们常常需要对网络中超参数设定初始值,比如权重,在这里我们需要用到一些生成随机数的函数,这些函数一般可以手动设定种子,如果种子设定为相同的,那么得到的数就是一样的。
萌新c语言中用随机数每次产生的都差不多,虽然不一样; 请大神看看代码哪里有问题,
你利用时间作为随机数的种子,但是每次在循环体的开头都对种子重新赋值,由于现在cpu运算速度快,所以导致你基本赋值的都是同一个种子
解决方法很简单,只要在程序开头对随机数赋一个种子即可
即将15行的srand移到13行的for循环前
其他部分同理,建议整个程序只要进行一次随机数种子赋值即可