gpt4 book ai didi

python - Tensorflow 2.0 tf.random.set_seed 不工作,因为我得到不同的结果

转载 作者:行者123 更新时间:2023-12-04 02:39:19 29 4
gpt4 key购买 nike

我使用 tf.random.set_seed 来确保我的实验的可重复性,但在多次训练我的模型后得到不同的损失结果。我正在使用 Tensorboard 监控每个实验的学习曲线,但我得到了不同的损失值和准确率。

最佳答案

在此处(回答部分)提供解决方案,即使它出现在评论部分,也是为了社区的利益。

要重现相同的结果,您可以创建如下函数并将种子直接传递给 Daniel 在评论中提到的层。

def reset_random_seeds():
os.environ['PYTHONHASHSEED']=str(2)
tf.random.set_seed(2)
np.random.seed(2)
random.seed(2)

请引用下面的完整代码,它重现了相同的结果

import os
####*IMPORANT*: Have to do this line *before* importing tensorflow
os.environ['PYTHONHASHSEED']=str(2)

import tensorflow as tf
import tensorflow.keras as keras
import tensorflow.keras.layers
import random
import pandas as pd
import numpy as np

def reset_random_seeds():
os.environ['PYTHONHASHSEED']=str(2)
tf.random.set_seed(2)
np.random.seed(2)
random.seed(2)

#make some random data
reset_random_seeds()
NUM_ROWS = 1000
NUM_FEATURES = 10
random_data = np.random.normal(size=(NUM_ROWS, NUM_FEATURES))
df = pd.DataFrame(data=random_data, columns=['x_' + str(ii) for ii in range(NUM_FEATURES)])
y = df.sum(axis=1) + np.random.normal(size=(NUM_ROWS))

def run(x, y):
reset_random_seeds()

model = keras.Sequential([
keras.layers.Dense(40, input_dim=df.shape[1], activation='relu'),
keras.layers.Dense(20, activation='relu'),
keras.layers.Dense(10, activation='relu'),
keras.layers.Dense(1, activation='linear')
])
NUM_EPOCHS = 100
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x, y, epochs=NUM_EPOCHS, verbose=0)
predictions = model.predict(x).flatten()
loss = model.evaluate(x, y) #This prints out the loss by side-effect

#With Tensorflow 2.0 this is now reproducible!
run(df, y)
run(df, y)
run(df, y)

输出:

32/32 [==============================] - 0s 2ms/step - loss: 0.5633
32/32 [==============================] - 0s 2ms/step - loss: 0.5633
32/32 [==============================] - 0s 2ms/step - loss: 0.5633

关于python - Tensorflow 2.0 tf.random.set_seed 不工作,因为我得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60058588/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com