簡體   English   中英

Keras CNN,高訓練低測試

[英]Keras CNN, High training while low testing

我正在做一個文本分類,我的數據集大小是 16000 KB,我的問題是我有 95% 的訓練和 90% 的測試。我可以增加測試嗎? 如何?

這是我的代碼

model = Sequential()
model.add(Conv1D( filters=256,kernel_size=5, activation = 'relu',input_shape=(7,1)))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(128, activation='relu'))

model.add(layers.Dense(64, activation='relu'))

model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(64, activation='relu'))

model.add(Dense(11, activation='softmax'))
model.summary()
model.compile(Adam(lr=0.001),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
history = model.fit(X_train, y_train,
                    epochs=200,
                    verbose=True,
                    validation_data=(X_test, y_test),
                    batch_size=128)
loss, accuracy = model.evaluate(X_train, y_train, verbose=True)
print("Training Accuracy: {:.4f}".format(accuracy))
loss, accuracy = model.evaluate(X_test, y_test, verbose=False)
print("Testing Accuracy:  {:.4f}".format(accuracy))

調試 model 的第一步是像示例一樣對 plot 訓練驗證曲線。

典型的訓練驗證曲線

現在根據曲線的行為方式,可能會有以下可能的推論和解決方案。

  1. 隨着 model 的訓練,兩條曲線發散,訓練不斷改進,而測試變得更糟或比訓練更早飽和。

    原因:Model 過度擬合訓練,需要正則化,例如。 輟學,體重衰減等。

  2. 兩條曲線在末端緊貼在一起,沒有進一步的改進發生。

    原因:Model 飽和或陷入局部最小值,嘗試增加學習率以推出最小值,如果仍然沒有重大改進,請嘗試增加 model 的復雜度。

  3. 兩條曲線在末端已經飽和,但相距很小,並且在進一步訓練時沒有發生重大變化。

    原因:model 已經從可用數據中學到了它可以做的事情並且不會進一步改進,嘗試數據轉換以生成新數據或獲取更多數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM