2024.02.13
CNN 실습
* 이전 일차에 이어서 진행
시도 2
overfit 문제 해결 위한 stride, pooling, dropout 적용
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(input_shape=(28,28,1), kernel_size=(3,3), filters=16),
tf.keras.layers.MaxPooling2D(pool_size(2,2), strides=(2,2)),
tf.keras.layers.Conv2D(kernel_size=(3,3), filters = 32),
tf.keras.layers.MaxPooling2D(pool_size(2,2), strides=(2,2)),
tf.keras.layers.Conv2D(kernel_size=(3,3), filters = 64),
tf.kears.layers.Flatten(),
tf.keras.layers.Dropout(rate = 0.3),
tf.keras.layers.Dense(units= 128, activation="relu"),
tf.keras.layers.Dropout(rate = 0.3),
tf.keras.layers.Dense(units= 10, activation = 'softmax')
])
model.summary()
# epoch 수를 늘리고 callback + earlystopping 적용
import os
cp_path = 'training/cp--{epoch:04d}.ckpt'
cp_dir = os.path.dirname(cp_path)
cp_callback = tf.keras.callbacks.ModelCheckpoint(cp_path, verbose = 1, save_weights_only = True)
es_callback = tf.keras.callbacks.EarlyStopping(monitor = "val_loss", patience = 10)
model = tf.keras.Sequential([
# 위와 동일
])
model.summary()
# callback 코드 적용
model.compile(
loss = "sparse_categorical_crossentropy",
optimizer = tf.keras.optimizers.Adam(),
metrics = ["accuracy"]
)
history = model.fit(train_X,
train_y,
epochs=20,
validation_split= 0.25, batch_size= 128,
##############코드 추가 부분 ##############
callbacks = [cp_callback, es_callback])
# 이후 최종 결정
load_cp_weights= "training/cp-0025.ckpt"
model.load_weights(load_cp_weights)
model.evaluate(test_X, test_y)
'ASAC 빅데이터전문가과정 > DL' 카테고리의 다른 글
ASAC 52일차_딥러닝 7일차 (0) | 2024.09.02 |
---|---|
ASAC 51일차_딥러닝 6일차 (0) | 2024.09.02 |
ASAC 49일차_딥러닝 4일차 (1) | 2024.09.02 |
ASAC 47일차_딥러닝 3일차 (0) | 2024.09.02 |
ASAC 45일차_딥러닝 1일차 (0) | 2024.09.01 |