提问人:N Anderson 提问时间:2/20/2023 最后编辑:PhilN Anderson 更新时间:2/21/2023 访问量:35
nnet() 在不同的操作系统中有不同的结果(Windows 与 Linux)
nnet() different results in different operating systems (Windows vs Linux)
问:
我正在使用 nnet() 包专门用于 ANN 模型的 R 脚本。我在本地计算机 (Windows) 上运行脚本,我的同事在他的计算机 (Docker -> Linux) 上运行相同的 R 脚本。对于ANN模型,我们得到了相似但不同的结果。神经元权重存在很大差异,拟合值和预测值略有差异。
我们在 nnet() 函数之前设置了相同的种子,因此我们在同一个随机化集上。此外,我已将模型的所有系数、偏差等的初始化权重 (“Wts”) 设置为相同的值 (1)。我还通过设置种子和执行随机 sample() 来测试两个系统的随机化,该样本返回相同的结果。
我还测试了我们的模型输入(光谱),一切都是 1:1 的统一。
我们构建了许多模型,包括PLS,GPR和SVR(带有网格搜索参数),并且我们总是得到相同的结果。这些模型不利用随机化,因此假设 ANN 模型中的随机化是造成差异的原因。
我们还将 R 更新到最新版本 (4.2.2),并更新了所有包,包括 nnet() 和来自同一存储库的依赖项。
我不知从何而来,我最后的想法是操作系统(我=Windows,他=Linux)之间的区别。是否还有其他可能影响 nnet() 函数的差异,例如舍入(因为模型输入变量为小数点后大小)或操作系统之间的排序差异?
期望在 ANN 模型(权重、拟合值和预测)之间具有完全的统一性。
抱歉没有可重现的代码,这些模型适用于高维数据(光谱> 1000 个变量,n > 1000)。我可以分享我们的 nnet() 函数代码:
cv_wts <- rep(1,cv_wts_n)
set.seed(seed)
cal <- nnet(TV ~ NIR, data = training_dat, size = n, decay = d, Wts = cv_wts,
linout=TRUE, maxit = 1000000, MaxNWts = 1000000, trace = FALSE)
答: 暂无答案
评论