เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจำแนกความรู้สึกที่แม่นยำยิ่งขึ้น

ในแบบฝึกหัดนี้ เราจะกลับมาที่ปัญหาการจำแนกความรู้สึก (sentiment classification) ที่เคยทำในบทที่ 1

ครั้งนี้จะเพิ่มความซับซ้อนให้กับโมเดลเพื่อปรับปรุงความแม่นยำ โดยใช้เลเยอร์ Embedding เพื่อฝึก word vectors จากชุดข้อมูลฝึกสอน และใช้เลเยอร์ LSTM สองชั้นเพื่อติดตามบริบทของข้อความที่ยาวขึ้น นอกจากนี้ยังเพิ่มเลเยอร์ Dense พิเศษก่อนเลเยอร์เอาต์พุตด้วย

โมเดลนี้มีความซับซ้อนมากขึ้น และการฝึกอาจใช้เวลานาน จึงมีโมเดลที่ผ่านการฝึกมาแล้วให้ใช้งาน โดยโหลดค่าน้ำหนักด้วยเมทอด .load_weights() จากคลาส keras.models.Sequential โมเดลนี้ฝึกด้วย 10 epochs และค่าน้ำหนักอยู่ในไฟล์ model_weights.h5

โมดูลต่อไปนี้โหลดไว้ในสภาพแวดล้อมแล้ว: Sequential, Embedding, LSTM, Dropout, Dense

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เพิ่มเลเยอร์ Embedding เป็นเลเยอร์แรกของโมเดล
  • เพิ่มเลเยอร์ LSTM ชั้นที่สองที่มี 64 ยูนิต โดยให้ returning ลำดับข้อมูล
  • เพิ่มเลเยอร์ Dense พิเศษที่มี 16 ยูนิต
  • ประเมินโมเดลเพื่อแสดงค่าความแม่นยำบนชุดข้อมูลฝึกสอน

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Build and compile the model
model = Sequential()
model.add(____(vocabulary_size, wordvec_dim, trainable=True, input_length=max_text_len))
model.add(____(64, return_sequences=____, dropout=0.2, recurrent_dropout=0.15))
model.add(LSTM(64, return_sequences=False, dropout=0.2, recurrent_dropout=0.15))
model.add(____(16))
model.add(Dropout(rate=0.25))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Load pre-trained weights
model.load_weights('model_weights.h5')

# Print the obtained loss and accuracy
print("Loss: {0}\nAccuracy: {1}".format(*model.____(X_test, y_test, verbose=0)))
แก้ไขและรันโค้ด