我正在嘗試運行一個神經網絡,在 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。
添加回答
舉報
0/150
提交
取消