프로그래머스 2021 국민대 여름방학 인공지능 과정 5주차 Day4 TIL
x_train = x_train.reshape(60000, 28, 28, 1).astype('float32') / 255.0 x_test = x_test.reshape(10000, 28, 28, 1).astype('float32') / 255.0 y_train = to_categorical(y_train) y_test = to_categorical(y_test)
데이터 전처리 방식이 다중 퍼셉트론 신경망 방식과는 차이가 있음
다중 퍼셉트론 신경망
3차원(샘플수, 행, 열) → 2차원(샘플수, 벡터수)컨볼루션 신경망
3차원(샘플수, 행, 열) → 4차원(샘플수, 행, 열, 채널)합성곱 계층과 풀링 계층
원본 이미지에 필터링 기법 적용완전 연결 계층(fully connected layer)
필터링된 이미지 분류model = Sequential([ Conv2D(32, (3, 3), padding='same', input_shape=(28, 28, 1), activation='relu'), Conv2D(32, (3, 3), padding='same', activation='relu'), MaxPooling2D(pool_size=(2, 2)), Conv2D(64, (3, 3), padding='same', activation='relu'), Conv2D(64, (3, 3), padding='same', activation='relu'), MaxPooling2D(pool_size=(2, 2)), Flatten(), Dense(512, activation='relu'), Dense(10, activation='softmax') ]) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Conv2D(컨볼루션 필터의 수, (필터 행, 필터 열), padding='same', input_shape=(행, 열, 채널), activation='relu')
padding
'valid'
유효한 영역만 출력 → 입력이미지 사이즈 > 출력이미지 사이즈'same'
이미지의 가장자리에 특정값으로 설정된 픽셀들을 추가함 → 입력이미지 사이즈 = 출력이미지 사이즈input_shape
MaxPooling2D(pool_size=(2, 2))
합성곱 계층
과 활성 함수
를 거쳐 생성된 이미지에서 주요한 값만 뽑아냄
사소한 이미지 구성 요소들의 변화가 영향을 미치지 않도록 함
코드
AI factory
참고
https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/
참고
https://untitledtblog.tistory.com/150
컨볼루션 신경망에 대해서 찾아보다가 다중 퍼셉트론 신경망에 대해서도 다시 알아보게 됐다. so hard,,
담엔 피그마 깔짝 시도해서 사진도 넣어봐야징^,^..
실습 위주의 수업방식으로 바뀐 이후로 뭔가 어떻게 공부를 해야하나 막막했는데, 어제 실시간 세션에서의 질의응답시간이 도움이 많이 됐던 것 같다.
코드 하나부터 열까지 다 알아야 될 것 같고 다 쓸 수 있어야 될 것 같았는데😅 그게 아니였다. 전체적인 메커니즘을 이해하는게 먼저인 것 같다. 그리고 거기서 튜닝해나가는...
그리고 정말 인공지능에 익숙해지려고 해야겠다. 나 이 쪽에 진짜 너무 무지함。・゚(゚><゚)゚・。