keras 为什么已经使用了np.random.seed()和tf.random.set_seed()后仍然得到不一致的结果

avwztpqn  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(232)

我尝试使用keras做NN分类。我已经使用np.random.seed()和tf.random.set_seed()来获得每次重新运行它时的常量结果。我在大约1个月前在我的语法中使用random seed,最初它是工作的,但最近我重新运行我的代码,并再次获得不同的结果。我使用的语法是这样的:

import numpy as np
import tensorflow as tf

np.random.seed(0)
tf.random.set_seed(0)

model1 = Sequential()
model1.add(Dense(100, input_dim= Train_X2_Tfidf.shape[1], activation='sigmoid'))
model1.add(Dense(1, activation='sigmoid'))
opt = Adam (learning_rate=0.01)
model1.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
model1.summary()

es = EarlyStopping(monitor="val_loss",mode='min',patience=10)
history1 = model1.fit(Train_X2_Tfidf, Train_Y2, epochs=200, verbose=1,
                    validation_split=0.2, batch_size=32, 
                    callbacks =[es])

我得到的结果是:

Epoch 1/200
75/75 [==============================] - 3s 16ms/step - loss: 0.4355 - accuracy: 0.7976 - val_loss: 0.3175 - val_accuracy: 0.8620

下一次运行时,我得到了以下结果:

Epoch 1/200
75/75 [==============================] - 1s 9ms/step - loss: 0.4341 - accuracy: 0.7925 - val_loss: 0.3169 - val_accuracy: 0.8653

如何在每次重新运行时得到相同的结果?谢谢

a11xaf1n

a11xaf1n1#

试试这个:

import numpy as np
import tensorflow as tf
import random
import os

def reset_seeds():
   os.environ["PYTHONHASHSEED"] = "123"
   np.random.seed(123) 
   random.seed(123)
   tf.random.set_seed(123)

reset_seeds()

相关问题