为了账号安全,请及时绑定邮箱和手机立即绑定

具有 3 个输出的 Keras 回归模型仅给出一个准确的结果

具有 3 个输出的 Keras 回归模型仅给出一个准确的结果

慕丝7291255 2022-01-05 10:25:13
我正在尝试运行一个神经网络,在 python 中使用 keras,它有 2 个输入值和 3 个输出值。输入表示自然频率,而输出表示等效冰载荷。问题是在模型完成训练后,它似乎只被训练用于预测一个输入,而不是所有三个输入。该模型是回归而不是分类。在这里我展示我的代码seed = 9np.random.seed(seed)# import datasetdataset=np.loadtxt("Final_test_matrix_new_3_digits.csv", delimiter=",")# Define datasetY=dataset[:, 0:3]X=dataset[:, 3:5]#Categorize datafrom sklearn.model_selection import train_test_splitX_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = seed)# create modelmodel = Sequential()model.add(Dense(12, input_dim=2,activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(3, init='uniform', activation='relu'))# compile the modelmodel.compile(loss='mean_squared_logarithmic_error', optimizer='adam', metrics=['accuracy'])# checkpointfilepath="weights.best_12_8_8_neurons.hdf5"checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')callbacks_list = [checkpoint]# fit the modelhistory=model.fit(X_train, Y_train, validation_split=0.1, epochs=100000, batch_size=10,callbacks=callbacks_list)# evaluate the modelscores = model.evaluate(X_test, Y_test)print ("Accuracy: %.2f%%" %(scores[1]*100))根据python,该模型的准确度为65%,但这一事实并没有影响输出的准确度,因为第二个输出的准确度低于第一个,而第三个输出的准确度几乎为0。代码的主要目标是创建一个回归模型,其中所有输出都具有相同的精度。下面分别显示了模型精度、模型损失和每个输出的预测:
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

看起来随机森林更适合您的情况。您应该尝试一下,特别是如果您的课程不平衡。


作为一种解决方法,您可以增加Dense(8)图层中的节点数,具体取决于数据的差异。


然后,您必须检查少数类并调整以下代码(合成少数类过采样技术):


from imblearn.over_sampling import SMOTE


sm = SMOTE()

x_train2, y_train2 = sm.fit_sample(X_train, Y_train)

请注意,此代码仅适用于二进制输出,因此您应该对 3 个类进行单热编码,并将其应用于 0 类和 1 类,然后是 0 类和 2 类,从零类中删除双倍过采样。然后你运行你的神经网络模型,增加到validation_split0.2。


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号