Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Compile và huấn luyện mô hình Conv1D cho phân loại StackOverflow

Sau khi chuẩn bị dữ liệu int-vectorized, bước tiếp theo là định nghĩa, compile và fit mô hình Conv1D.

Mã compile và fit

print("vocab_size thực tế là vocab_size+1 do 0 dùng cho padding")
int_model = create_model(vocab_size=VOCAB_SIZE + 1, num_labels=4)

print("Compile mô hình")
int_model.compile(
    loss=losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer='adam',
    metrics=['accuracy']
)

print("Fit mô hình với dữ liệu")
history = int_model.fit(int_train_ds, validation_data=int_val_ds, epochs=5)

Kết quả huấn luyện

vocab_size thực tế là vocab_size+1 do 0 dùng cho padding
Compile mô hình
Fit mô hình với dữ liệu
Epoch 1/5: loss: 1.3020 - accuracy: 0.3877 - val_loss: 0.8041 - val_accuracy: 0.6625
Epoch 2/5: loss: 0.7200 - accuracy: 0.7003 - val_loss: 0.5815 - val_accuracy: 0.7685
Epoch 3/5: loss: 0.4517 - accuracy: 0.8471 - val_loss: 0.5137 - val_accuracy: 0.8040
Epoch 4/5: loss: 0.2709 - accuracy: 0.9311 - val_loss: 0.5091 - val_accuracy: 0.8065
Epoch 5/5: loss: 0.1453 - accuracy: 0.9717 - val_loss: 0.5320 - val_accuracy: 0.8025

Giải thích

  • vocab_size + 1 vì index 0 dành cho padding, token bắt đầu từ 1.
  • SparseCategoricalCrossentropy(from_logits=True) vì mô hình đầu ra logits (chưa qua softmax).
  • Optimizer Adam hội tụ nhanh, accuracy train đạt 97% sau 5 epoch.
  • Validation accuracy dao động ~80%, cho thấy overfitting nhẹ sau epoch 3.
  • Có thể thêm Dropout, EarlyStopping, hoặc regularization để cải thiện generalization.

Nguồn: TensorFlow Text Loading Tutorial