Keras模型预测结果相反

我在Keras中训练了一个名为model_2的模型,并使用model.predict进行预测,但当我重新运行代码时,发现结果完全不同。例如,第一次column 0的所有概率值都接近1,但下一次运行时,概率值都接近0。这是否与内存或我在其他帖子中看到的stateful参数有关?

X = df.iloc[:,1:10161]X = X.to_numpy()                      X = X.reshape([X.shape[0], X.shape[1],1]) X_train_1 = X[:,0:10080,:]X_train_2 = X[:,10080:10160,:].reshape(17,80)inputs_1 = keras.Input(shape=(10080, 1))layer1 = Conv1D(64, 14)(inputs_1)layer2 = layers.MaxPool1D(5)(layer1)layer3 = Conv1D(64, 14)(layer2)       layer4 = layers.GlobalMaxPooling1D()(layer3)layer5 = layers.Dropout(0.2)(layer4)inputs_2 = keras.Input(shape=(80,))layer6 = layers.concatenate([layer5, inputs_2])layer7 = Dense(128, activation='relu')(layer6)layer8 = layers.Dropout(0.5)(layer7)layer9 = Dense(2, activation='softmax')(layer8)model_2 = keras.models.Model(inputs = [inputs_1, inputs_2], outputs = [layer9])adam = keras.optimizers.Adam(lr = 0.0001)model_2.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['acc'])prediction = pd.DataFrame(model_2.predict([X_train_1,X_train_2]),index = df.iloc[:,0])  pred = np.argmax(model_2.predict([X_train_1,X_train_2]), axis=1) display(prediction, pred)

矛盾结果的示例:

试验1:

    0               1id      11  1.131853e-07    1.00000022  1.003963e-06    0.99999933  1.226156e-07    1.00000044  9.985497e-08    1.00000055  1.234705e-07    1.00000066  1.189311e-07    1.00000077  6.631822e-08    1.00000088  9.586067e-08    1.00000099  9.494666e-08    1.000000

试验2:

    0           1id      11  0.183640    0.81636022  0.487814    0.51218733  0.151600    0.84840044  0.135977    0.86402355  0.120982    0.87901866  0.171371    0.82862977  0.199774    0.80022688  0.133711    0.86628999  0.125785    0.874215

试验3:

    0           1id      11  0.900128    0.09987222  0.573520    0.42648033  0.948409    0.05159144  0.955184    0.04481655  0.959075    0.04092566  0.945758    0.05424277  0.956582    0.04341888  0.954180    0.04582099  0.964601    0.035399

试验4:

    0   1id      11  1.0 4.697790e-0822  1.0 2.018885e-0733  1.0 2.911827e-0844  1.0 2.904826e-0855  1.0 1.368165e-0866  1.0 2.742492e-0877  1.0 1.461449e-0888  1.0 2.302636e-0899  1.0 2.099636e-08

模型训练使用了以下代码:

n_folds = 10skf = StratifiedKFold(n_splits=n_folds, shuffle=True)skf = skf.split(X_train_1, Y_cat)cv_score = []for i, (train, test) in enumerate(skf):    model_2 = my_model()    history = model_2.fit([X_train_1[train], X_train_2[train]], Y[train], validation_data=([X_train_1[test], X_train_2[test]], Y[test]), epochs=120, batch_size=10)         result = model_2.evaluate([X_train_1[test], X_train_2[test]], Y[test])    keras.backend.clear_session()

回答:

这是完全正常的,当你创建一个新模型时,其权重会被随机初始化,因此每次运行这段代码时,预测结果都会发生变化。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注