Tôi có một mô hình + LSTM tích chập trong Keras, tương tự như mô hình này (ref 1), mà tôi đang sử dụng cho một cuộc thi Kaggle. Kiến trúc được hiển thị dưới đây. Tôi đã đào tạo nó trên bộ 11000 mẫu được dán nhãn của mình (hai lớp, tỷ lệ lưu hành ban đầu là ~ 9: 1, vì vậy tôi đã tăng tỷ lệ 1 đến khoảng 1/1) cho 50 epoch với tỷ lệ phân tách 20%. Tôi đã bị quá mức trắng trợn trong một thời gian nhưng tôi nghĩ rằng nó đã được kiểm soát với các lớp tiếng ồn và bỏ học.
Mô hình trông giống như nó được đào tạo tuyệt vời, cuối cùng đã ghi được 91% trên toàn bộ tập huấn luyện, nhưng khi thử nghiệm trên tập dữ liệu thử nghiệm, rác tuyệt đối.
Lưu ý: độ chính xác xác nhận cao hơn độ chính xác đào tạo. Điều này trái ngược với "quá mức" điển hình.
Trực giác của tôi là, với sự phân tách xác thực nhỏ, mô hình vẫn đang quản lý để phù hợp quá mạnh với tập hợp đầu vào và mất tính tổng quát. Manh mối khác là val_acc lớn hơn acc, có vẻ tanh. Đó có phải là kịch bản có khả năng nhất ở đây?
Nếu điều này là quá mức, việc tăng phân tách xác thực sẽ giảm thiểu điều này hay tôi sẽ gặp vấn đề tương tự, vì trung bình, mỗi mẫu sẽ vẫn còn một nửa tổng số kỷ nguyên?
Ngươi mâu:
Layer (type) Output Shape Param # Connected to
====================================================================================================
convolution1d_19 (Convolution1D) (None, None, 64) 8256 convolution1d_input_16[0][0]
____________________________________________________________________________________________________
maxpooling1d_18 (MaxPooling1D) (None, None, 64) 0 convolution1d_19[0][0]
____________________________________________________________________________________________________
batchnormalization_8 (BatchNormal(None, None, 64) 128 maxpooling1d_18[0][0]
____________________________________________________________________________________________________
gaussiannoise_5 (GaussianNoise) (None, None, 64) 0 batchnormalization_8[0][0]
____________________________________________________________________________________________________
lstm_16 (LSTM) (None, 64) 33024 gaussiannoise_5[0][0]
____________________________________________________________________________________________________
dropout_9 (Dropout) (None, 64) 0 lstm_16[0][0]
____________________________________________________________________________________________________
batchnormalization_9 (BatchNormal(None, 64) 128 dropout_9[0][0]
____________________________________________________________________________________________________
dense_23 (Dense) (None, 64) 4160 batchnormalization_9[0][0]
____________________________________________________________________________________________________
dropout_10 (Dropout) (None, 64) 0 dense_23[0][0]
____________________________________________________________________________________________________
dense_24 (Dense) (None, 2) 130 dropout_10[0][0]
====================================================================================================
Total params: 45826
Đây là lời gọi để phù hợp với mô hình (trọng lượng lớp thường là khoảng 1: 1 kể từ khi tôi lấy mẫu đầu vào):
class_weight= {0:1./(1-ones_rate), 1:1./ones_rate} # automatically balance based on class occurence
m2.fit(X_train, y_train, nb_epoch=50, batch_size=64, shuffle=True, class_weight=class_weight, validation_split=0.2 )
SE có một số quy tắc ngớ ngẩn rằng tôi có thể đăng không quá 2 liên kết cho đến khi điểm của tôi cao hơn, vì vậy đây là ví dụ trong trường hợp bạn quan tâm: Tham chiếu 1: machinelearningmastery DOT com SLASH-sort-lstm-recapse-neural-mạng- trăn