단지 필자의 공부 기록일 뿐이니 참고용으로 사용해주시기 바랍니다. 틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다.
벌써 군대에 오고서 세 번째 게시물이다.
어제 내가 자는 사이에 비가 온 모양이다. 아침에 일어나보니 습했다.
얼마전엔 축구도 봤는데 선임분들이랑 같이 봤다. 내 친구도 같이..ㅎ 내 친구가 계속 내 침대로 올라와서 때릴 뻔했다.(나보다 1년 선임임)
암튼 난 잘 살고있고 이제는 어느정도 적응한 것 같아서 다행이다. 다들 좋으신 분들인 것 같다. 운동도 열심히 하고있는데 군대에 오고 키도 크고 살도 찌우는 중이다. 벌써 3kg 찌우고 1.5cm 컸다.(아빠 말대로 키 크는중..)
일과 후에는 운동 + 공부만 한다. 핸드폰은 초반에는 많이 했지만(물론 아직도 초반이다) 최근에는 거의 안한다. 나만의 앱을 만들고 싶고 그걸 가능하게 하는 토대가 되는 시기가 바로 지금일 수 있었으면 좋겠다. 인공지능을 공부하는 이유는 인공지능을 활용한 앱을 만들고 싶기 때문!
사회에 나가면 다양한 행사에도 나가고 싶다. 1년 6개월동안 붙잡혀 왔다는 느낌이 아니라 내가 스스로 왔다는 느낌이 들도록, 날 발전시키는 시기가 되도록 열심히 노력중인 현재이다. 갑자기 감성적으로 변했는데 아무튼 그렇고 지금부터 오늘의 공부를 해보자잇!
Padding이란 Feature Extracture할때 이미지가 너무 작아지는 것을 방지하기 위한 기법이다.
Zero Padding이라는 용어가 있는데 이는 이미지의 각 테두리에 0을 집어넣어 Output 크기와 Input 크기를 동일하게 맞추도록 도와준다.
from tensorflow.keras.layers import Input,Conv2D
input_tensor = Input(shape=(28,28,1))
x = Conv2D(filters=4, kernel_size=3, strides=1, padding='same', activation='relu')(input_tensor)
Conv2D 파라미터 padding='same'은 Padding을 진행하여 Input과 Output의 크기를 동일하게 만들라는 의미이고 padding='valid'라고 입력하면 Padding을 적용하지 않게 된다.
Pooling은 Padding과 반대되는(?) 개념이라고 볼 수 있을 것 같다. Pooling을 진행함으로써 이미지 배열 크기를 줄여주는 효과가 나타난다.
이런 Pooling에는 이미지의 특성을 띄워주는 Max Pooling, 좀더 스무스한 이미지로 만들어주는 Average Pooling이 있다.

보통 Pooling의 크기는 2X2를 선호한다고 한다.
from tensorflow.keras.layers import Input, Conv2D, MaxPooling
input_tensor = Input(shape=(28, 28, 1))
x = Conv2D(filters=32, kernel_size=3, strides=1, padding='same', activation='relu')(input_tensor)
x = Conv2D(filters=64, kernel_size=3, activation='relu')(x)
x = MaxPooling2D(2)(x)
순서는 Padding -> Convolution -> Pooling -> Fully Connected 로 작동한다.