DeseoDeSeo
[Deep Learning] ex04_개, 고양이 분류하기 본문
데이터 경로 지정
train_dir= '/content/drive/MyDrive/Colab Notebooks/DeepLearning/data/dogAndCat/train'
valid_dir='/content/drive/MyDrive/Colab Notebooks/DeepLearning/data/dogAndCat/validation'
하나의 변수에 이미지파일 전부 다 합치기
○ 픽셀 값(0~255/정수) ➜ (0~1 / 실수)
1. 숫자의 크기 줄이기 ➜ 연산량 감소
2. 분산( 값이 분포해있는 범위 ) 줄이기 ➜ 연산의 오류 줄어듬.
- 이미지 크기 맞춰주기(150,150)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
- 픽셀값 변경하기
- 묵시적 형 변환 하기
- 프로그래밍에서 연산상에서 타입이 변경되도록 하기.
generator = ImageDataGenerator(rescale = 1./255) # 1.= 1.0
# 하나의 변수에 이미지 파일 전부 다 합치기
# 이미지 크기 동일하게 만들어주기
# 라벨링
train_generator = generator.flow_from_directory(
directory = train_dir, # train의 이미지 경로, 변환할 이미지
target_size=(150,150), # 변환할 이미지의 크기
batch_size= 100, # 한번에 변환할 이미지 개수
class_mode='binary' # 라벨링 방법. 다중분류 : categorical,
)
valid_generator = generator.flow_from_directory(
directory = valid_dir, # train의 이미지 경로, 변환할 이미지
target_size=(150,150), # 변환할 이미지의 크기
batch_size= 100, # 한번에 변환할 이미지 개수
class_mode='binary' # 라벨링 방법. 다중분류 : categorical,
)
# CNN 모델 설계
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense,Conv2D, MaxPool2D, Flatten
# 딥러닝 모델 생성 =토대 설계
model1 = Sequential()
# 입력층
model1.add(Conv2D( #특징찾기
filters=32, #찾을 특징의 개수
kernel_size=(3,3), #특징의 크기
input_shape=(150,150,3), # 입력데이터의 크기 조정, 3 ➜ RGB를 뜻함. # 0 : 검은색, 255:흰색.
activation= 'relu' #출력층을 제외하고 activation 잘 모르겠으면 relu적음. optimizer = adam
))
model1.add(MaxPool2D( # 특징이 아닌부분 삭제하기
pool_size=(2,2) # 기준크기에서 1개의 특징만 가져오기 / 4개 중에서 1개 사용하기.
))
model1.add(Conv2D( #특징찾기
filters=32, #찾을 특징의 개수
kernel_size=(3,3), #특징의 크기
activation= 'relu' #출력층을 제외하고 activation 잘 모르겠으면 relu적음. optimizer = adam
))
model1.add(MaxPool2D( # 특징이 아닌부분 삭제하기
pool_size=(2,2) # 기준크기에서 1개의 특징만 가져오기 / 4개 중에서 1개 사용하기.
))
######## 특징 추출부 끝 ###########
model1.add(Flatten()) # 특징추출부와 분류부를 이어주는 역할.
################## 분류분석 시작 #####################
model1.add(Dense(units=32, activation='relu'))
# 출력층
model1.add(Dense(units=1, activation='sigmoid'))
# 학습 방법 설정
model1.compile(
loss ='binary_crossentropy',
optimizer ='Adam',
metrics = ['accuracy']
)
model1.fit(
train_generator, # 학습 데이터(X_train, y_train이 합쳐져있음)
epochs =20,
validation_data=valid_generator
)
'Deep Learning' 카테고리의 다른 글
[Deep Learning] ex03_활성화함수, 최적화함수, callback함수 (2) | 2023.10.16 |
---|---|
[Deep Learning] 그동안 학습 정리 및 CNN (0) | 2023.09.25 |
[Deep Learning] ex02_손글씨 데이터 분류(다중 분류) (1) | 2023.09.21 |
[Deep Learning] ex01_유방암데이터분류( 이진분류 ) (0) | 2023.09.19 |
[Deep Learning] 퍼셉트론 (0) | 2023.09.19 |