【问题标题】:Why am I getting different outputs for the same dataset?为什么我会为同一个数据集得到不同的输出?
【发布时间】:2021-06-14 12:55:08
【问题描述】:

此代码旨在尝试预测加密货币的未来价格。当我给它提供数据时,它每次都会输出不同的东西。这是为什么呢?

完整代码链接:https://pastebin.com/cEfDCL8H

这段代码输出的内容似乎是随​​机的,我不知道为什么。

x,y = preprocess_df(test_df)

model = tf.keras.models.load_model('models/RNN_Final-15-0.972.model')

prediction = model.predict(x)

print("15 Min Prediction(0): " + str(CATEGORIES[np.argmax(prediction[0])]))

【问题讨论】:

    标签: python tensorflow machine-learning recurrent-neural-network


    【解决方案1】:

    在神经网络初始化时,会分配随机权重。这会在最终输出中产生差异。为避免这种情况,您可以使用随机种子,以便每次应用相同的随机权重。

    例如: 您需要在所有需要的变量中设置种子,如 here 所述:

    # Set a seed value
    seed_value= 12321 
    import os
    
    # 1. Set `PYTHONHASHSEED` environment variable at a fixed value
    os.environ['PYTHONHASHSEED']=str(seed_value)
    
    # 2. Set `python` built-in pseudo-random generator at a fixed value
    import random
    random.seed(seed_value)
    
    # 3. Set `numpy` pseudo-random generator at a fixed value
    import numpy as np
    np.random.seed(seed_value)
    
    # 4. Set `tensorflow` pseudo-random generator at a fixed value
    import tensorflow as tf
    tf.set_random_seed(seed_value)
    
    # 5. For layers that introduce randomness like dropout, make sure to set seed values 
    
    model.add(Dropout(0.25, seed=seed_value))
    

    【讨论】:

    • 在添加 from numpy.random import seed seed(1) tf.random.set_seed(2) 后,我仍然得到随机结果
    • @LawnmoersTheEpicGamer 我更新了答案,请查看。
    • 好吧,我会重新训练我的模型,然后用结果回复你
    • 重新训练后依然不一致
    • 我很高兴它有所帮助。 :)
    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多