每次运行神经网络代码时结果都会改变

问题描述 投票:1回答:2

我通过运行此链接Neural Network – Predicting Values of Multiple Variables中提供的代码获得了结果。我能够计算损失的准确性等。但是,每次运行此代码时,都会得到一个新结果。是否有可能获得相同(一致)的结果?

python-3.x tensorflow neural-network conv-neural-network recurrent-neural-network
2个回答
1
投票

那里有很多随机数组。每次使用np.random.seed()获得相同的值。例如:

np.random.seed()

每次运行此代码,您都会得到相同的结果。在我的机器上:

np.random.seed(42)
for _ in range(3):    
    print(np.random.random(3))

请注意,机器学习管道中的许多其他部分也使用随机化。例如:

  • 使用[0.37454012 0.95071431 0.73199394] [0.59865848 0.15601864 0.15599452] [0.05808361 0.86617615 0.60111501] 拆分为训练,验证和测试数据集。
  • 在神经网络中设置初始权重。
  • 优化途径。

大多数ML函数允许您将种子作为参数传递。看一下文档。根据您正在执行的操作以及所使用的库,您是否可以使整个管道具有可复制性。

您可能也喜欢train_test_split()train_test_split()关于使用Keras获得可再现的结果。


1
投票

代码到处都是this article!此外,权重在大多数情况下也是随机设置的,并且batch_size对结果也有影响(尽管影响很小)。

  1. Y_train,X_test,X_train是随机生成的
  2. 使用this one作为优化程序,这意味着您将执行随机梯度下降。以random迭代的起点以便收敛。
  3. batch_size为8表示您将运行由8个[[randomly所选样本组成的批次。
解决方案:

    在代码中设置随机种子,以始终使random.randint()生成随机值
  1. 尽管有很小的偏差,但不会产生太大的问题
  2. 与2相同。
  • [如果我找到一种方法来解决adam / np.random.seed()问题,则将编辑答案。
  • © www.soinside.com 2019 - 2024. All rights reserved.