머신러닝,딥러닝/tensorflow

lec11 CNN basics tensorflow

mcdn 2021. 1. 25. 17:21
반응형

conv 5*5 -> subsampling 2*2 

feature extraction 과정임 

마지막으로 classification 

CNN이 ct image 분석 

수상했던 결과 

주어진 이미지 데이터 움직이고 여러개의 값 나온걸 pooling 한다 

간단한 이미지를 우선 생각해보자 

2*2*1 필터 stride 1 

이런 과정 거치면 2*2 결과가 나온다. 

텐서플로에서는 알아서 나온다. 

우선 토이 이미지를 만듬 

앞의 값은 n = 1 하나의 이미지 3 * 3 

시각화 

weight 정할 때 필터 크기 2 *2 * 1 * 1 

앞 1은 color 뒤 1 은 필터 

그리고 첫번째 필터부터 다 더한 값 number로 저장 

 

텐서플로로 어떻게 구현하냐? 이렇게 

 

시각화 하기 위해서 출력 

그럼 12 16 24 28이 나온다. 

3*3 으로 채워주고 싶으면 패딩을 더한다. padding = smae 하면 필터에 맞춰서 0을 추가로 더해준다. 

 

결국 이렇게 나온다 

3*3 필터가 되면? 

3장으 ㅣ이미지가 나온다. 

conv2d 호출 시키면 이미지 세개 나온다 

 

풀링 작업을 할 수 있다 subsampling 

필터 사이즈 다음 스트라이드 패딩 이렇게 정해주고 

그다음 max_pool 함수에 의해 뽑아낸다. 

신기하게 처음 값이랑 결과 같다 

ㅎㅎ

 

mnist 

 

conv 레이어 통과하는거 보자 

3*3 1 5 레이어 

패딩은 same 

stride 14 * 14 가된다 

conv2d 

출력하기 위한 마지막 두줄 

5개를 뽑아냈으니까 5개 나옴 

이제는 max poling 

14*14 이미지, stride = 1 이기 때문에 7*7 사이즈 나온다 

subsampling 

 

==================================

 

99% 정확도에 도전하도록 한다 

이번 실습에서 사용하는 모델 

con pool conv pool 그리고 10개 추측 시스템 

우선 인풋 이미지를 conv pool 에 맞게 바꾸는 단계 

이미지 처음 크기 28 28 1 

n개가 들어오겠자 -1 

필터 32개의 필터 

stride 1 로 하고 padding same 이면 weight 크기 상관없이 결과는 인풋과 같다 

렐루 통과 

맥스 풀링 2 * 2 필터 사이즈 스트라이드 패딩 

이제 2 이기 때문에 14 * 14가 된다 

 

결과적으로 이렇게 나온다 

14 * 14 * 32를 이제 다음 단계에 사용하게 된다. 

3*3* 32 * 64 

64개의 필터 

풀링 

 

이제 마지막에 fc 에 넣을 예정 쭉 펼쳐있는데 다시 reshape 한다 

7*7*64 긴 배열이 n개 쌓여있는 형태 3136 

이걸 fc에 넣을 예정 

입력 값은 7*7*64 였지 

xavier initlizer 

10은 0~9 

matul + b 똑같다 

adam softmax 부분으 똑같다 

train session 부분은 똑같다 

그런 다음에 hypothesis ,1 과 비굑해서 같으면 1 아니면 0 이렇게 cost accuracy나온다 

 

deep CNN 

conv 3개 했다면 어떻게 되냐? 

아까와 똑같지만 한단 더 추가됨 

장점? 정확도가 높아진다 드랍아웃할 떄 주의할 점은 마지막 단계 1 이어야 한다는 거 또 주의 

 

 

==========================================

저번 시간 0.9938 봤지 

파이썬 클라스를 하는 방법을 배우자 

위의 파이썬 클라스 살펴보면 

init 

build net 

predict

get_accuracy

train 

 

model(ses, 'ml')

 

batch xs batch ys 

 

그다음으로 tf.layers라는 모듈도 있다. 

dense(...)

이부분 굉장히 간단하다 

 

어떻게 하냐면 layers.conv2d (inputs filters kernel_size padding activation)

이렇게 바로바로 줄 수 있다. 

드랍아웃은 training true false 주고 rate = 1 실수 방지할 수 있다. 

한줄로 다 해결 가능 : ㅇ 

조화롭게 만든다는 장점 

여러개의 모델을 트레인하고 뉴 데이터 예측 각각 예측시키고 

metaclassifer로 조합시킨다 

ensemble traning 

모델 클라스 

7개라고 정했다. 그다음 7개 만드는데 클래스 쓴다 

학습 시작 epoch 돌고 batch마다 학습시킨다 

train 

cost 어떻게 되는지 확인 

 

조합하는 방법 여러 가지 있는데 우리는 합하는 걸로 하자 

 

각각 모델 예측 값 결과 다 합쳐서 확인 가장 점수 높은걸 argmax로 궇ㄹ 수 있다 

루프를 돌면서 모델 하나 예측하게 되고 그리고 그걸 합한다 

한다음 돌려보면 모델 accruacy모다 앙상블이 더 높다 

연습문제 고민해봤다 

깊고 넓게? 

등 

 

 

 

 

 

 

 

반응형