Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธี Compile และ Fit โมเดลกับ Flower Dataset ด้วย TensorFlow

บทนำ

หลังสร้างโมเดล CNN สำหรับ Flower classification (5 คลาส) ขั้นตอนต่อไปคือ compile (กำหนด loss, optimizer, metrics) และ fit (train)

โค้ดตัวอย่าง

print("The model is being compiled")
model.compile(
    optimizer='adam',
    loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy'])

print("The model is being fit to the data")
model.fit(
    train_ds,
    validation_data=val_ds,
    epochs=3
)

ผลลัพธ์

The model is being compiled
The model is being fit to the data
Epoch 1/3 92/92 [==============================] - 107s 1s/step - loss: 1.3570 - accuracy: 0.4183 - val_loss: 1.0730 - val_accuracy: 0.5913
Epoch 2/3 92/92 [==============================] - 101s 1s/step - loss: 1.0185 - accuracy: 0.5927 - val_loss: 1.0041 - val_accuracy: 0.6199
Epoch 3/3 92/92 [==============================] - 95s 1s/step - loss: 0.8691 - accuracy: 0.6529 - val_loss: 0.9985 - val_accuracy: 0.6281

คำอธิบาย

  • SparseCategoricalCrossentropy(from_logits=True): loss สำหรับ multi-class classification (labels เป็น integer 0-4, logits ไม่ผ่าน softmax)
  • optimizer='adam': adaptive learning rate
  • metrics=['accuracy']: ติดตาม accuracy ระหว่าง train
  • Validation accuracy ต่ำกว่า training → overfitting (ต้องเพิ่ม regularization/augmentation)

โมเดล Architecture (จากบทความก่อนหน้า)

model = tf.keras.Sequential([
    layers.experimental.preprocessing.Rescaling(1./255),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(128, activation='relu'),
    layers.Dense(5)  # num_classes = 5
])