"Keras:모델 제작"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
(새 문서: == 개요 == 학습 모델을 설계하고 제작한다. 층을 쌓아서 제작하는 형태. === 예시와 사용 === 이미지 분류에 대한 모델은 다음과 같이 만들...)
 
28번째 줄: 28번째 줄:
  
 
num_classes = 10
 
num_classes = 10
outputs = layers.Dense(num_classes, activation="softmax")(x)  # 분류 갯수에 따라...
+
outputs = layers.Dense(num_classes, activation="softmax")(x)  # 분류 갯수(num_classes)에 따라 분류한다.
  
 
# 모델 제작
 
# 모델 제작
69번째 줄: 69번째 줄:
 
|}
 
|}
  
 +
== 모델 검증 ==
 +
validation_data를 넣어 loss 검사를 할 수도 있지만...
  
 +
validation_split를 0~1 사이로 넣으면, 데이터를 처리하기 전에 해당 비율만큼 마지막에서 떼내어 epoch가 끝나면 loss를 계산하는 데 쓰인다.
 
[[분류:Keras]]
 
[[분류:Keras]]

2021년 11월 15일 (월) 11:05 판

1 개요

학습 모델을 설계하고 제작한다. 층을 쌓아서 제작하는 형태.

1.1 예시와 사용

이미지 분류에 대한 모델은 다음과 같이 만들어진다.

의도 설명 방법
모델 제작
from tensorflow.keras import layers

# 입력 데이터 처리.
inputs = keras.Input(shape=(None, None, 3))     # 3개의 채널, 크기제한 없음.
x = CenterCrop(height=150, width=150)(inputs)   # 이미지 크롭.
x = Rescaling(scale=1.0 / 255)(x)               # 0~1 사이의 값으로 스케일링.

# 층 만들기.
x = layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu")(x)     # 합성곱 레이어.
x = layers.MaxPooling2D(pool_size=(3, 3))(x)                                # 풀링층 
x = layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu")(x)
x = layers.MaxPooling2D(pool_size=(3, 3))(x)
x = layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu")(x)
x = layers.GlobalAveragePooling2D()(x)                                      # 평균풀링.

num_classes = 10
outputs = layers.Dense(num_classes, activation="softmax")(x)  # 분류 갯수(num_classes)에 따라 분류한다.

# 모델 제작
model = keras.Model(inputs=inputs, outputs=outputs)
모델 정보 보기 모델에 대한 요악정보를 볼 수 있다. model.summary()
모델 교육 모델을 교육한다.
# 어떤 방식으로 교육할지 지정.
model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=1e-3),
              loss=keras.losses.CategoricalCrossentropy())
batch_size = 32  # 검증데이터의 배치사이즈에서도 공유해야 하기 때문에 변수로 지정.
callbacks = [  # 각 에포크마다 교육데이터를 저장한다.
    keras.callbacks.ModelCheckpoint(
        filepath='path/to/my/model_{epoch}',
        save_freq='epoch')
]

# 사용할 데이터 지정.
dataset = tf.data.Dataset.from_tensor_slices((numpy_array_of_samples, numpy_array_of_labels)).batch(batch_size)
# 검증 데이터 설정.
val_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(batch_size)

# 모델 교육 및 검증. dataset 안에 배치사이즈를 지정해 담았다.
history = model.fit(dataset, epochs=1, callbacks=callbacks,
                    validation_data=val_dataset)
print(history.history)  # 로스, 정확도 등의 데이터를 보여준다.

2 모델 검증

validation_data를 넣어 loss 검사를 할 수도 있지만...

validation_split를 0~1 사이로 넣으면, 데이터를 처리하기 전에 해당 비율만큼 마지막에서 떼내어 epoch가 끝나면 loss를 계산하는 데 쓰인다.