为啥我会为同一个数据集得到不同的输出?
Posted
技术标签:
【中文标题】为啥我会为同一个数据集得到不同的输出?【英文标题】: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])]))
【问题讨论】:
【参考方案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 我更新了答案,请查看。 好吧,我会重新训练我的模型,然后用结果回复你 重新训练后依然不一致 我很高兴它有所帮助。 :)以上是关于为啥我会为同一个数据集得到不同的输出?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在同一数据集上使用 tensorflow 和 keras 重新训练的 Inception V3 显示出不同的准确性?