我在訓練和測試數據中繪制了模型精度曲線,并獲得了以下看起來相當不尋常的曲線。這條曲線說明什么?是過擬合還是欠擬合?誰能幫幫我,我哪里出了問題?我正在研究 ABIDE 數據集。我有 871 個樣本,我使用 cc400 分割生成了 76636 個特征。我提供了下面的代碼片段:import tensorflow as tffrom keras.models import Sequentialfrom keras.layers import Densefrom keras.layers import Dropout#create modelmodel = Sequential()#add model layersmodel.add(Dropout(0.2))initializer_relu = tf.keras.initializers.HeUniform()model.add(Dense(128, activation='relu', kernel_initializer=initializer_relu, kernel_regularizer=tf.keras.regularizers.l1(0.0001), input_shape= (76636,)))model.add(Dropout(0.2))model.add(Dense(64, activation='relu', kernel_initializer=initializer_relu, kernel_regularizer=tf.keras.regularizers.l1(0.0001)))model.add(Dropout(0.2))initializer_sigmoid = tf.keras.initializers.GlorotUniform()model.add(Dense(1, activation='sigmoid', kernel_initializer=initializer_sigmoid))#compile model using mse as a measure of model performancemodel.compile(optimizer='adam', loss='binary_crossentropy', metrics='accuracy')from keras.callbacks import EarlyStoppingearly_stopping_monitor = EarlyStopping(patience=3)#train modelhistory= model.fit(X_train, y_train, validation_data=(X_test, y_test), batch_size=64 , epochs=20, callbacks=[early_stopping_monitor])import matplotlib.pyplot as pltprint(history.history.keys())# summarize history for accuracyplt.plot(history.history[ 'accuracy' ])plt.plot(history.history[ 'val_accuracy' ])plt.title( 'model accuracy' )plt.ylabel( 'accuracy' )plt.xlabel( 'epoch' )plt.legend([ 'train' , 'test' ], loc= 'lower right' )plt.show()
1 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
準確率線呈直線的原因是模型無法在 20 個 epoch 內學習。因為不同的特征沒有相似的值范圍,因此梯度可能最終需要很長時間,并且可能會來回振蕩,并且需要很長時間才能最終找到全局/局部最小值。為了克服模型學習問題,我們對數據進行標準化。我們確保不同的特征具有相似的值范圍,以便梯度下降可以更快地收斂
添加回答
舉報
0/150
提交
取消