묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3]
Pooling layer 사용하는 이유가 궁금합니다. (CNN 이론 부분이에요)
먼저 질문을 드린 이유는 CNN의 이미지 특징을 추출하는 과정에서 쓰이는, Convolution layer와 Pooling layer의 기능이 동일하고, Padding을 쓰는 이유에 대한 궁금증이 들었기 때문입니다.CNN 이론 강의 내용에서, CNN의 구조는 크게 (1)이미지 특징을 추출하는 부분과 (2)클래스를 분류하는 부분이 있다고 배웠습니다.(2)의 경우는 특징을 추출하고 난 뒤에 softmax나 , logsoftmax activation function을 통해, 분류하는 것이기 때문에, CNN 앞 시간에서 배웠던 1차원 형태의 데이터 처리하는 방법과 유사하다고 하셨습니다.Convolution layer는 filter(kenel)이 창문 닦듯이(알고리즘으로 보면 슬라이딩 윈도우 느낌으로) 슥슥 움직이면서 Feature Map(특성 맵)을 추출하는데, 이 부분은 칼라이미지나 흑백이미지의 경우 기존의 1차원 형태의 데이터로 바로 만들어주는 과정에 비해, 공간적/지역적 정보를 유지할 수 있으며, 특정 부분을 추출할 수 있기 때문에 해당 이미지의 특징을 확인할 수 있는 장점을 가집니다. 하지만 영상에서 설명하셨듯이, filter가 적용되면서 중복되는 부분이 발생해서 계산양이 많아지고, 무엇보다 5x5이미지의 경우 3x3필터를 사용했을 때 3x3 크기가 되기 때문에 데이터가 소실되는 문제가 발생한다고 하셨습니다. 따라서, 이를 해결하기 위해, Zero padding을 적용하여, 이미지 가장자리를 0으로 감싸줌으로써 3x3필터를 사용하더라도, 5x5의 원본 이미지의 크기가 3x3 크기가 아닌 5x5로 보존되기 때문에, 데이터 소실을 방지할 수 있다고 들었습니다.Q1:그래서 여기 까지 들었을 때, 특징을 잘 추출하기 위해 커널의 크기를 작게 했을 때, 원본 크기에 비해, output이 작아질 수도 있으니까 zero padding을 쓰는 것이 중요하구나... 하는 생각과 zero padding을 통해 원본 크기를 보존하는 것이 중요하구나 라고 생각했습니다. 혹시 맞을 까요? 그리고 나서, Pooling 설명을 들었는데, Pooling layer는 convolution layer에서 얻어진 output에서 특징을 뽑아 내는 과정이기 때문에, 얻어진 feature map의 사이즈가 줄어드는 현상이 발생하는데, 특징을 뽑아내는 것도 이해는 가지만, 데이터가 소실되는 문제가 발생할 수 있지 않을까...? 하는 생각이 들었습니다.CNN의 구조가 Convolution layer와 pooling layer가 같이 순서쌍으로 동작하기 때문에, 각각의 기능에 대해서 특징을 추출하는 과정이다는 부분에는 이해는 갔지만, padding의 기능때문에, 특징 맵의 크기를 보존하는 것이 원래 input가 비슷하게 보존하는 것이 좋은건지, 줄여나가는 건지 헷갈립니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3]
10_ADVANCE_EXAMPLE-에서 MNIST 함수 작성할 때 index_error가 나타납니다 ㅠㅠ
항상 강의들으면서, 따라치면서, 여러번 반복해서 익히려고 하고 있습니다. 지금까지 별 문제 없이 쏙쏙 이해가 잘 가서, 지금까지 질문을 드리지 않았는데요.. 함수를 작성하는 부분에서 자꾸 인덱스 에러가 나타나서, 제가 어느 부분을 잘못 쓴 건지 모르겠습니다. 선생님께서 작성하신 코드를 그대로 복사해서 넣었는데도 index error가 호출되어서 왜 그런지 모르겠습니다...
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
실습코드
제2강에 있는 실습코드는 어떻게 다운로드 받는건가요??호형님 아이디 비번이 있는건가요?? 제가 찾아봐도 잘 모르겟네요.
-
미해결프로그래머를 위한 강화학습(저자 직강)
cartpole_reinforce.ipynb 에러
코랩에서 cartpole_reinforce.ipynb 실행시킬때 아래와 같은 에러 발생합니다.ValueError: Layer "my_model_1" expects 3 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1, 4) dtype=float32>]에러나는 소스 위치는 아래 화면에서 "y_pred = self(states, training=True)" 부분에서 에러가 발생됩니다. class MyModel(tf.keras.Model): def train_step(self, data): in_datas, out_actions = data states, action_matrix, rewards = in_datas[0], in_datas[1], in_datas[2] with tf.GradientTape() as tape: y_pred = self(states, training=True) action_probs = K.sum(action_matrix*y_pred, axis=-1) loss = -K.log(action_probs)*rewards trainable_vars = self.trainable_variables gradients = tape.gradient(loss, trainable_vars) self.optimizer.apply_gradients(zip(gradients, trainable_vars)) tensorflow 버젼 : 2.9.2 이며, 모델에 3개의 값을 주어야 하는데, 1개만 받아서 그런것 같습니다.해결 방법 알려 주시기 바랍니다.감사합니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
검증 및 테스트 진행시 Drop-out 질문
드롭아웃은 학습시에만 사용해야한다고 하였는데, 그렇다면 검증 및 Test를 진행할때 model.eval()을 해주면 드롭아웃이 자동으로 비활성화 되는 것인가요?? 아니면 따로 설정을 해주어야 하는건가요??
-
해결됨실전 인공지능으로 이어지는 딥러닝 개념 잡기
XOR 문제 행렬 연산
XOR문제 영상 6분 40초 쯤 입력값을 행렬로 넣을 때 왜 전치 행렬이 사용되는지 잘 모르겠습니다. 행렬계산의 공식 같은 것인 가요? 아니면 x1과 x2가 원래 열로 들어오다가 행으로 들어가서 전치 행렬이 필요한 건가요? 그리고 H와 X 순서가 바뀌는 이유는 입출력을 4Xn 행렬로 만들기 위해서 인가요?
-
해결됨[PyTorch] 쉽고 빠르게 배우는 NLP
NLP에 RNN을 사용하는 이유
본 강의에 NLP 방법으로 RNN이 나와있는데 인공지능에는 RNN 뿐만 아니라 GAN도 있고 뭐 여러가지가 있잖아요 그 중에서 RNN 기법을 꼭 사용해야 하는 이유가 있나요? R&D 사업계획서 같은 거를 쓸 때 어떤 토픽에 대한 해결 방법을 무슨 무슨 인공지능 기법을 쓴다고 할 때 그 기법을 쓰는 이유로 반 페이지에서 1페이지 가량 써야한다고 하면 어떤 걸 적는 게 좋을까요?