파일로 학습
데이터 다운로드
https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip
파일을 다운로드 후 압축 풀기
data_dir = 'cats_and_dogs_filtered'
BATCH_SIZE = 32
IMG_SIZE = (224,224)
데이터 폴더의 구조
- train과 validation 폴더에 cats와 dogs 폴더가 존재
- 고양이 사진은 cats 폴더에
- 강아지 사진은 dogs 폴더에
- 위와 같이 이미지 종류별로 폴더에 나누어 저장하면 폴더별로 레이블을 붙여 자동으로 로딩
훈련 데이터 로딩
import tensorflow as tf
train_dataset = \
tf.keras.preprocessing.image_dataset_from_directory(
f'{data_dir}/train',
shuffle=True,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE)
Found 2000 files belonging to 2 classes.
- 특별한 언급이 없어도, train 폴더에서 dogs와 cats의 이미지를 로딩
- 메모리를 절약하기 위해 필요한만큼만 로딩하므로 shuffle과 batch_size를 설정
- image_size를 설정하면 크기는 자동 조정
검증 데이터 로딩
validation_dataset = \
tf.keras.preprocessing.image_dataset_from_directory(
f'{data_dir}/validation',
shuffle=False,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE)
Found 1000 files belonging to 2 classes.
모형 정의
from tensorflow.keras.layers import *
model = tf.keras.Sequential([
Rescaling(scale=1/127.5, offset=-1),
Flatten(),
Dense(1, activation="sigmoid"),
])
훈련
model.compile(
loss="binary_crossentropy",
metrics=["accuracy"])
model.fit(train_dataset, validation_data=validation_dataset)
63/63 [==============================] - 3s 46ms/step - loss: 7.0829 - accuracy: 0.5375 - val_loss: 4.9212 - val_accuracy: 0.5350
<keras.callbacks.History at 0x22c21c31570>