⭐주의⭐
개인적으로 짧게 공부하고 찾아본 내용들이라 부족한 부분이 많습니다.
보시고 수정이 필요하다 싶은 부분은 언제든지 댓글 남겨주시면 감사하겠습니다!
Keras
머신러닝 및 딥러닝 모델을 빌드하고 학습시키기 위한 Tensorflow의 상위 수준 API.
- 사용자 친화적 : 인터페이스가 간단하고 일관적. 사용자 오류에 대해 명확하고 실행 가능한 피드백을 제공.
- 모듈식 및 구성 가능 : Keras 모델은 거의 제한 없이 구성 가능한 빌딩 블록을 함께 연결하는 방식.
- 쉽게 확장 가능 : 새로운 레이어, 측정항목, 손실 함수를 만들고 최첨단 모델을 개발.
1
2
|
import tensorflow as tf
#tf.keras
|
cs |
1. 모델 설계
Sequential
순차적인 구조를 가진 모델 생성.
객체 생성 후 add() 메서드를 사용하여 입력층과 은닉층, 출력층 layer를 추가.
1
|
model = tf.keras.models.Sequential()
|
cs |
GlobalAveragePooling2D
2D 입력 텐서의 공간 차원을 평균화하여 하나의 벡터로 변환.
1
|
model.add(tf.keras.layers.GlobalAveragePooling2D())
|
cs |
Dense
뉴런 구성 요소 중 하나인 fully connected layer를 구현한 클래스.
- relu : 출력값을 0 이상의 값으로 변환. 은닉층에 많이 사용.
- softmax : 출력값을 다중 클래스 분류에 적합한 확률 값으로 변환. 다중 클래스 모델 출력층에 많이 사용.
- sigmoid : 출력값을 0과 1 사이의 값으로 변환. 이진 분류 모델에서 출력층에 많이 사용.
Dropout
신경망의 일반화 성능을 개선하기 위해 고안된 regularization 기법 중 하나.
무작위로 일부 뉴런을 선택하여 출력을 0으로 만들어 과적합을 방지하고, 모델의 일반화 능력을 향상.
- Dropout(0.25) : 무작위로 선택된 뉴런 중 25%를 삭제한다는 의미.
1
2
3
|
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.Dense(3, activation='softmax'))
|
cs |
summary
생성된 모델 정보 확인.
1
|
model.summary()
|
cs |
2. 학습 및 검증용 이미지 로드
ImageDataGenerator
원본 데이터 파일들을 Numpy Array 형태로 가져온 후 객체 생성 및 이미지 전처리.
- rescale=1./255 : 값을 0과 1 사이로 변경.
- rotation_range=10 : 무작위 회전각도 10도 이내
- shear_range=0.1 : 층밀리기 강도 10%
- zoom_range=0.1 : 무작위 줌 범위 10%
- horizontal_flip/vertical_flip : 무작위로 가로/세로 뒤집기
1
2
3
|
train_data_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255,
horizontal_flip=True, rotation_range=10, shear_range=0.1, zoom_range=0.1)
test_data_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
|
cs |
flow_from_directory
Numpy array Iterator 객체 생성. 내부적으로 yield를 사용하여 배치 사이즈만큼 그때그때마다 데이터를 전달하여 메모리를 절약.
- target_size : 설계 모델에 들어갈 인풋 이미지 사이즈 중 width, height 입력.
- batch_size : 이미지 데이터 원본 소스에서 한 번에 얼마만큼의 이미지 데이터를 가져올 것인지.
- class_mode
- categorical : 2D 멀티-레이블 클래스. one-hot 인코딩 된 형태. 부호화된 라벨 반환.
- sparse : 1D 멀티-레이블 클래스. 레이블 인코딩된 형태. 정수 라벨 반환.
- binary : 1D 이진 분류 클래스. 0 또는 1인 형태. binary 라벨 반환.
1
2
3
4
5
6
7
8
9
|
train_dir = './train_image/'
test_dir= './test_image/'
train_data = train_data_gen.flow_from_directory(train_dir, batch_size=64,
color_mode='rgb', shuffle=True, class_mode='categorical',
target_size=(224,224))
test_data = test_data_gen.flow_from_directory(test_dir, batch_size=64,
color_mode='rgb', shuffle=True, class_mode='categorical',
target_size=(224,224))
|
cs |
3. 모델 학습 환경설정
compile
학습방식에 대한 환경설정.
- loss : 현재 가중치를 평가하는 데 사용한 손실 함수. 다중클래스=categorical_crossentropy
- optimizer : 최적의 가중치를 검색하는 데 사용되는 최적 알고리즘.
- metris : 평가 척도.
1
2
|
model.compile(loss='categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy'])
|
cs |
4. callback 함수 지정
ModelCheckPoint
Keras 모델을 학습하는 동안 일정한 간격으로 모델의 가중치를 저장하고, 최상의 성능을 보인 모델을 선택하는 기능 제공.
- filepath : 문자열, 모델 가중치를 저장할 파일 경로.
- monitor : 모니터링할 지표 지정.
- verbose : 얼마나 자세하게 정보를 표시할지.
- save_best_only : 가장 좋은 성능을 보인 가중치만 저장하는지 여부.
- mode : 모니터링할 지표의 최소화 또는 최대화를 제어.
EarlyStopping
검증 손실이 더 이상 개선되지 않을 때 학습을 중단시키는 역할. 과적합을 방지하고 학습 시간을 단축.
- monitor : 모니터링할 지표 지정.
- patience : 개선이 없다고 판단하기 전에 대기할 epoch 수. 즉, 이 값만큼 검증 손실이 개선되지 않으면 학습을 중단.
1
2
3
|
checkpoint = tf.keras.callbacks.ModelCheckpoint('./test.h5', monitor='val_loss',
verbose=1, save_best_only=True, mode='auto')
earlystopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5)
|
cs |
5. 모델 학습
fit
설계한 모델에 fit() 함수를 호출하면 ImageDataGenerator, flow_from_directory의 단계가 실질적으로 수행, 설정된 batch_size 만큼의 Numppy Array 데이터를 tensor로 바꾸고 설계한 모델의 인풋으로 입력되어 본격적인 학습을 시작.
- step_per_epoch : 한 epoch에 사용할 step 수.
- epoch : 전체 훈련 데이터셋에 대한 반복 횟수.
- callbacks : 설정한 callback 함수 등록.
1
2
|
hist = model.fit(train_data, steps_per_epoch=10, epochs=30,
callbacks=[checkpoint, earlystopping])
|
cs |
6. 학습한 모델 저장 및 로드
save
load_model
1
2
|
model.save('./test.h5')
model = tf.keras.models.load_model('./test.h5')
|
cs |
참고사이트
https://wikidocs.net/book/9214
머신러닝 케라스 다루기 기초
《머신러닝 케라스 다루기 기초》은 딥러닝 프레임워크 중 하나인 케라스(Keras)를 활용하여 머신러닝을 구현하는 방법을 소개하는 책입니다. 책에서 다루는 내용은 머신러닝을 …
wikidocs.net
https://www.tensorflow.org/guide/keras/sequential_model?hl=ko
Sequential 모델 | TensorFlow Core
Google I/O에 참여해 주셔서 감사합니다. 주문형 모든 세션 보기 주문형 시청 Sequential 모델 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 설정 import tensorflow as
www.tensorflow.org
https://keras.io/ko/getting-started/sequential-model-guide/
Guide to the Sequential model - Keras Documentation
케라스 Sequential 모델 시작하기 Sequential 모델은 레이어를 선형으로 연결하여 구성합니다. 레이어 인스턴스를 생성자에게 넘겨줌으로써 Sequential 모델을 구성할 수 있습니다. from keras.models import Seq
keras.io
'IT > DEV Study' 카테고리의 다른 글
LCR Meter 및 물리량 개념 간단 정리 (L, C, R, Z, X, G 등) (36) | 2024.03.20 |
---|---|
Android Studio 안드로이드 스튜디오 설치 방법 (2023.08) (56) | 2023.08.29 |
[통신/네트워크] CRC 정리. CRC-16 C#/VB 코드. 온라인 CRC 변환기 링크. (3) | 2023.02.07 |
[VB] Dictionary Add & Remove Test (feat. LINQ 람다식) (0) | 2022.09.13 |
[Nomad Corders] NestJS로 API 만들기 #4 정리 (완강) (1) | 2022.07.27 |