为什么我从同一个 neural-network 模型得到不同的预测?
Why I get different predictions from same neural-network model?
正如我写的标题,我卡在了我的神经网络做出不同预测值的问题
这是我使用神经网络进行预测的步骤。
首先,使用'nnet'.
对x进行归一化并制作神经网络模型
之后,我使用预测命令进行了预测。预测(nnet模型,测试数据)
但问题是,每当我使用 运行 神经网络时,我都会得到不同的预测。
例如,
我的模型<-nnet(~~~~)
预测(mymodel.test数据)
我从预测中得到了值 A。
之后,我再次执行相同的命令'mymodel<-nnet(~~~~) predict(mymodel.test data)',那么很自然地我得到了预测值A。但是这个时候,我得到了B.
如果我再运行它,我就得了C。
为什么我从同一个神经网络模型得到不同的预测?
我应该怎么做才能解决这个问题?
原因是您在进行另一次预测之前正在重新训练您的模型。默认情况下训练神经网络模型涉及在初始化时为每个神经元值设置一些随机值。因此,每次训练都会在一定程度上产生不同的模型。
为了避免这种情况,要么使用相同的模型实例(开始时只执行一次mymodel<-nnet(~~~~)
,之后只执行predict()
),要么设置随机值生成的种子,这样你总是得到相同的一组随机值被初始化
即使数据和模型相同,您得到不同结果的原因是每次您请求预测时,您都会要求程序初始化模型所需的一切(即权重)。如果你每次都想要相同的结果,那么你需要为权重保留相同的值而不是每次都重新初始化它们,你可以通过将它们放入数据库以供以后使用来实现
正如我写的标题,我卡在了我的神经网络做出不同预测值的问题
这是我使用神经网络进行预测的步骤。
首先,使用'nnet'.
对x进行归一化并制作神经网络模型之后,我使用预测命令进行了预测。预测(nnet模型,测试数据)
但问题是,每当我使用 运行 神经网络时,我都会得到不同的预测。
例如,
我的模型<-nnet(~~~~)
预测(mymodel.test数据)
我从预测中得到了值 A。
之后,我再次执行相同的命令'mymodel<-nnet(~~~~) predict(mymodel.test data)',那么很自然地我得到了预测值A。但是这个时候,我得到了B.
如果我再运行它,我就得了C。
为什么我从同一个神经网络模型得到不同的预测?
我应该怎么做才能解决这个问题?
原因是您在进行另一次预测之前正在重新训练您的模型。默认情况下训练神经网络模型涉及在初始化时为每个神经元值设置一些随机值。因此,每次训练都会在一定程度上产生不同的模型。
为了避免这种情况,要么使用相同的模型实例(开始时只执行一次mymodel<-nnet(~~~~)
,之后只执行predict()
),要么设置随机值生成的种子,这样你总是得到相同的一组随机值被初始化
即使数据和模型相同,您得到不同结果的原因是每次您请求预测时,您都会要求程序初始化模型所需的一切(即权重)。如果你每次都想要相同的结果,那么你需要为权重保留相同的值而不是每次都重新初始化它们,你可以通过将它们放入数据库以供以后使用来实现