본문 바로가기

2차원 합성곱7

32. [CNN기초] 이미지의 합성곱 훈련 -쉬운예제(이론)- 저번시간엔 image to column 이란 무엇인지, im2col 을 이용해 어떻게 이미지를 합성곱 할 수 있는지, 역전파는 어떻게 하는지 알아보았다. 이번 시간에는 정말 쉬운 예제로 간단한 이미지를 합성곱을 이용해 어떻게 훈련할 수 있는지 알아보고자 한다. 이론시간을 갖는 이유는, 무작정 컴퓨터 앞에 앉아 코딩하는 것은 정말로 멍청하고 비효율적이기 때문이다. 노트를 이용하여 내용을 손을 한번 전개하면서 의사코드(psudo code)를 작성하는 과정이 정말정말 필요하다. (그리고 이러한 노트 정리는 아이패드가 짱이다. ㅡㅡ) 1. 문제제기 아래와 같이 Input인 3×3 이미지 4장이 있다. 어느 쪽 모서리가 밝은지 주목하자. 이를 Target인 2×2 이미지로 훈련할 수 있을까? 간단하게 생각해서, .. 2023. 1. 20.
31. [CNN기초] 2차원 배열 합성곱 - image to column-2 이전 시간에는 image to coumn을 이용하여 합성곱 연산을 진행하였다. 하지만 아직도 갈 길이 많다. 이전 예제는 원리를 설명하느냐 정말 간단하게만 구현하였기 때문에 제대로 하려면 스트라이드 구현, 패딩 구현, coumn to image, 다중 채널 이미지 변환 4가지가 남아 있다. Numpy 딥러닝 시리즈에서는 1채널 (gray)로 진행한다. 다중 채널은 현재 코드 진행으로 매우 비효율적이므로 코드를 다루지 않고 개념만 마지막에 다룰 것이다. 원래 이미지는 (batch, channels, height, width) 또는 (batch, height, width, channels)로 구성되어 있는데 편의를 위해 1채널만 사용하므로 (batch, height, width)로 사용할 것이다. 또한 쉬운.. 2023. 1. 11.
30. [CNN기초] 2차원 배열 합성곱 - image to column 구현 1. 기존 합성곱 방식의 문제점 이전시간에 1차원 배열에 대한 합성곱 연산을 실시하였다. 이번 시간부터 2차원 배열(이미지)에 대해 실시해 보도록 하겠다. 원리는 간단한데, 1차원을 2차원으로 확장시켰으므로 1차원 합성곱을 2번 한다고 생각하면 쉽다. 문제는, for문 중첩이 너무 심하다는 것이다. 예를 들어 최소 아래와 같은 for문 중첩이 발생한다. for input in inputs: for fmap_h in range(fmap_height): for fmap_w in range(fmap_width): a = 0 for filter_h in range(W.shape[0]): for filter_w in range(W.shape[1]): ... ... ... 이건 못참는다(...) 나 안해! 코드 작.. 2023. 1. 6.