ฉันมีโมเดล + LSTM แบบ convolutional ใน Keras คล้ายกับที่นี่ (อ้างอิง 1) ที่ฉันใช้สำหรับการแข่งขัน Kaggle สถาปัตยกรรมที่แสดงด้านล่าง ฉันได้ฝึกมันในชุดตัวอย่างที่มีป้ายกำกับของฉัน 11000 ตัวอย่าง (สองคลาสความชุกเริ่มต้นคือ ~ 9: 1 ดังนั้นฉันจึงเพิ่ม 1 ต่อ 1 เป็นอัตราส่วน 1/1) สำหรับ 50 epochs ที่มีการตรวจสอบความถูกต้อง 20% ชั่วครู่หนึ่ง แต่ฉันคิดว่ามันสามารถควบคุมเสียงและเลเยอร์กลางคันได้
แบบจำลองดูเหมือนว่าจะเป็นการฝึกอบรมที่ยอดเยี่ยมในตอนท้ายได้คะแนน 91% จากชุดฝึกอบรมทั้งหมด แต่เมื่อทดสอบชุดข้อมูลการทดสอบแล้วขยะสมบูรณ์
ข้อสังเกต: ความแม่นยำในการตรวจสอบความถูกต้องสูงกว่าความแม่นยำในการฝึกอบรม นี่คือสิ่งที่ตรงกันข้ามกับการ overfitting "ทั่วไป"
ปรีชาญาณของฉันคือเมื่อแยกการตรวจสอบความถูกต้องของไอซ์เล็กโมเดลยังคงจัดการเพื่อให้พอดีกับชุดอินพุตและการสูญเสียลักษณะทั่วไปมากเกินไป เบาะแสอื่น ๆ คือ val_acc นั้นดีกว่ามาตรฐานดูเหมือนว่าคาว นั่นเป็นสถานการณ์ที่เป็นไปได้มากที่สุดที่นี่ใช่ไหม
หากสิ่งนี้มากเกินไปจะเพิ่มการแยกการตรวจสอบที่ลดลงทั้งหมดหรือฉันจะพบปัญหาเดียวกันเนื่องจากโดยเฉลี่ยแต่ละตัวอย่างจะเห็นครึ่งยุคทั้งหมดยังคงอยู่หรือไม่
นางแบบ:
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
นี่คือการเรียกเพื่อให้พอดีกับแบบจำลอง (โดยทั่วไปแล้วน้ำหนักคลาสจะอยู่ที่ประมาณ 1: 1 เนื่องจากฉันอัปโหลดอินพุตเป็นอย่างมาก):
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 มีกฎโง่ ๆ บางอย่างที่ฉันสามารถโพสต์ได้ไม่เกิน 2 ลิงก์จนกว่าคะแนนของฉันจะสูงกว่าดังนั้นนี่คือตัวอย่างในกรณีที่คุณสนใจ: Ref 1: กลไกการเรียนรู้ DOT com SLASH ลำดับ -lstm-recurrent-neural-Networks- หลาม keras