[토크ON세미나] 딥러닝 입문에서 활용까지 케라스(Keras) 3강 & 4강

3강 - MLP(multi layer perceptron)

레이어

레이어의 주요 인자는 아래와 같다.

Dense(8, input_dim=4, init="uniform", activation='relu'))

8 : 출력 뉴런 수 설정
input_dim : 입력 뉴런 수 (즉, 8*4의 훈련을 행함.)
init : 가중치 초기화 방법(uniform :균일분포, normal:가우시안 분포)
activation : 활성화 함수(relu, sigmoid, softmax)

4강 - Convolution

레이어

Conv2D(32, (5,5), padding='valid', input_shape=(28,28,1), activation='relu')

32 : 컨볼루션 필터 수
(5,5) : 컨볼루션 커널 (행, 열)
padding : 경계 처리 방법(valid:유효한 영역-> 입력이 출력보다 작음, same:입력과 출력이 같음)

pooling

MaxPooling2D(pool_size=(2,2))

2*2사이즈의 pool에서 최대 값만 모아 놓는다. Convolution과는 다르게 matrics 연산을 하지 않고 뽑아낼 수 있다.

위와 같이 input에 대해서 2x2 영역에서의 최대값만을 선택해낸다. 이를 하는 이유는
1. 미묘한 변화에 대해서 무시할 수 있다.(픽셀 값의 위치가 조금씩 변하더라도 max값은 같기 때문.)
2. pooling을 통해 feature를 줄일 수 있기 때문이다. 결과적으로 pooling과 padding을 이용하여 overfitting을 줄인다.
(feature = input elements이다. input_size = 28x28이라면 feature=764이다)

Flatten

입력의 경우 3차원 이상이 대다수이므로 그것을 평탄화 시켜준다.(1차원으로)

ImageDataGenerator

이 함수는 이미지를 가져온다.

train_datagen = ImageDataGenerator(rescale=1./255) ##정규화
train_generator = train_datagen.flow_from directory(
   '경로',
    target_size=(24,24),  ##타겟을 resize
    batch_size=3,
    class_mode='categorical')

ImageDataGenerator를 쓴다면 학습 시에 fit_generator를 사용해야한다. fit의 경우 메모리에서 x,y를 로딩해서 넘기기 때문에 까다롭지만, fit_generator의 경우 generator 자체를 넘긴다.

model.fit_generator(
	train_generator,
    steps_per_epoch=3,
    epochs=50,
    validation_data=test_generator,
    validation_steps=5)

데이터 부풀리기

케라스의 경우 데이터 부풀리기를 지원한다. ImageDataGenerator에서 rotation, shift, flip등을 사용해서 이미지를 변형시킨 뒤 학습할 수 있다.(이미지의 경우 부풀리기가 기본이다.)

data_aug_gen = ImageDataGenerator(rescale=1./255,
	rotation_range=15,
    width_shift_range=0.1,
    height_shift_range=0.1,
    shear_range=0.5,  ##기울어짐
    zoom_range=[0.8, 2.0],  ##0.8~2.0배 확대
    horizontal_flip=True,  ##수평 뒤집기
    vertical_flip=True,   ##수직 뒤집기
    fill_mode='nearest')

좋은 웹페이지 즐겨찾기