顺序模型在每次运行时给出不同的结果 [英] sequential model give a different result at every run

查看:106
本文介绍了顺序模型在每次运行时给出不同的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用于构建keras顺序模型的python脚本.每当我得到不同的结果而脚本中没有任何更改时.请看一下脚本.我错了,请帮忙.

I have a python script for building a keras sequential model. Everytime i am getting different results without any changes in script. kindly have a look on script. where i am wrong please help.

thedata = pandas.read_csv("C:/User/Downloads/LSTM/data.csv", sep=', ', delimiter=',', header='infer', names=None)

np.random.seed(1337)

x = thedata['Review']
y = thedata['Polarity_Numeral']
x = x.iloc[:].values
y = y.iloc[:].values

tk = Tokenizer(num_words=40000, lower=True, split=" ")
tk.fit_on_texts(x)
x = tk.texts_to_sequences(x)    
max_len = 120
x = pad_sequences(x, maxlen=max_len)
max_features = 40000
testx = x[51000:52588]
print (testx)
testy = y[51000:52588]
x = x[0:50999]
y = y[0:50999]


model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len))
model.add(SpatialDropout1D(0.3))
model.add(GaussianNoise(0.2))
model.add(LSTM(128 , dropout_W=0.3, dropout_U=0.3, return_sequences=False))
model.add(Dense(1, W_regularizer=l2(0.2)))
model.add(Activation('sigmoid'))
model.summary()
adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.00)
model.compile(loss='binary_crossentropy', optimizer=adam,metrics = ['accuracy'] )
model_history = model.fit(x, y=y, batch_size=64, epochs=1, verbose=1,validation_split = 0.2)
model.save('C:/User/Downloads/model.h5')
model.save_weights('C:/User/Downloads/weight_model.h5')

predictions = model.predict(testx)
print (predictions)

第一次跑步,我得到的就是57% 在第二次跑.. 53% 第三名.. 55% 每当它随机变化时. 感谢您的帮助!

On first time run, i am getting i.e 57% On Second time run .. 53% On third .. 55% Everytime it is changing randomly. Thanks for the help!

推荐答案

此代码用于tensorflow后端

This code is for tensorflow backend

这是因为权重是使用随机数初始化的,因此每次都会得到不同的结果.这是预期的行为.为了获得可重现的结果,您需要将随机种子设置为:

This is because the weights are initialised using random numbers and hence you will get different results every time. This is expected behaviour. To have reproducible result you need to set the random seed as:

import tensorflow as tf
import random as rn

os.environ['PYTHONHASHSEED'] = '0'

# Setting the seed for numpy-generated random numbers
np.random.seed(37)

# Setting the seed for python random numbers
rn.seed(1254)

# Setting the graph-level random seed.
tf.set_random_seed(89)

from keras import backend as K

session_conf = tf.ConfigProto(
      intra_op_parallelism_threads=1,
      inter_op_parallelism_threads=1)

#Force Tensorflow to use a single thread
sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)

K.set_session(sess)

# Rest of the code follows from here on ...

这篇关于顺序模型在每次运行时给出不同的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆