Training settings
Please provide a valid training processor option
Neural network architecture
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, ReLU
from tensorflow.keras.layers import GlobalAveragePooling2D, Dense, InputLayer
from tensorflow.keras.optimizers import Adam
# ===== HYPERPARAM =====
EPOCHS = args.epochs or 80
BATCH_SIZE = args.batch_size or 16
# ===== DATA AUGMENTATION =====
data_augmentation = tf.keras.Sequential([
tf.keras.layers.RandomRotation(0.1),
tf.keras.layers.RandomZoom(0.1),
])
# ===== DATASET =====
# ⚠️ KHÔNG shuffle sau khi batch
train_dataset = train_dataset.map(
lambda x, y: (data_augmentation(x, training=True), y),
num_parallel_calls=tf.data.AUTOTUNE
)
train_dataset = train_dataset.shuffle(64).batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)
validation_dataset = validation_dataset.batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)
# ===== MODEL =====
model = Sequential()
# ✅ INPUT 128x128
model.add(InputLayer(input_shape=(128, 128, 3)))
# 🔥 Block 1
model.add(Conv2D(8, 3, strides=2, padding='same'))
model.add(ReLU())
# 🔥 Block 2
model.add(DepthwiseConv2D(3, strides=2, padding='same'))
model.add(ReLU())
model.add(Conv2D(12, 1))
model.add(ReLU())
# 🔥 Block 3
model.add(DepthwiseConv2D(3, strides=2, padding='same'))
model.add(ReLU())
model.add(Conv2D(16, 1))
model.add(ReLU())
# 🔥 Block 4
model.add(DepthwiseConv2D(3, strides=2, padding='same'))
model.add(ReLU())
model.add(Conv2D(20, 1))
model.add(ReLU())
# 🔥 Pooling
model.add(GlobalAveragePooling2D())
# 🔥 Embedding
model.add(Dense(24, activation='relu'))
# Output
model.add(Dense(classes, activation='softmax'))
# ===== COMPILE =====
model.compile(
optimizer=Adam(learning_rate=0.0007),
loss=tf.keras.losses.CategoricalCrossentropy(label_smoothing=0.05),
metrics=['accuracy']
)
# ===== TRAIN =====
model.fit(
train_dataset,
epochs=EPOCHS,
validation_data=validation_dataset,
callbacks=callbacks,
verbose=2
)
# ===== QUANTIZATION =====
disable_per_channel_quantization = False
Input layer (49,152 features)
Select a scoring function
2D conv / pool layer (8 filters, 3 kernel size, 1 layer)
2D conv / pool layer (16 filters, 3 kernel size, 1 layer)
Dropout (rate 0.2)
Flatten layer
Dense layer (16 neurons)
Dense layer (4 neurons)
Output layer (4 classes)
Model
Model version: