avgpool
Average Pooling Layer 란?
Feature Map의 평균 값을 계산해 전파시키는 Layer 입니다.
make_avgpool_layer
함수 이름: make_avgpool_layer
입력:
batch: 배치 크기
w: 너비
h: 높이
c: 채널 수
동작:
Average pooling 레이어를 생성합니다.
설명:
이 함수는 Average pooling 레이어를 생성합니다.
입력으로는 배치 크기(batch), 너비(w), 높이(h), 채널 수(c)를 받습니다.
함수는 먼저 생성된 레이어를 초기화하고, 필드에 각 값을 할당합니다. 그 다음, 출력 크기와 입력 크기를 계산하고, 메모리를 동적으로 할당합니다. 이 함수에서는 l.output과 l.delta를 메모리 할당합니다.
마지막으로, 레이어의 forward와 backward 함수를 각각 forward_avgpool_layer와 backward_avgpool_layer 함수로 설정하고, 레이어를 반환합니다.
Average pooling 레이어는 입력 데이터를 정해진 영역으로 나누어 각 영역의 평균값을 계산합니다. 이를 통해 입력 데이터의 공간적인 정보를 유지하면서, 데이터의 크기를 줄일 수 있습니다. 이는 Convolutional Neural Network에서 특징 맵의 크기를 줄이는데에 주로 사용됩니다.
forward_avgpool_layer
함수 이름: forward_avgpool_layer
입력:
l: avgpool_layer 구조체
net: network 구조체
동작:
Average pooling 레이어의 forward 연산을 수행합니다.
설명:
이 함수는 Average pooling 레이어의 forward 연산을 수행합니다. 입력으로는 avgpool_layer 구조체와 network 구조체를 받습니다.
함수는 먼저 입력 데이터를 순회하면서, 입력 데이터를 필터 크기(h, w)로 나누어 평균값을 계산합니다. 이를 통해 출력 데이터의 크기를 줄입니다. 이후 평균값을 출력 데이터에 저장합니다.
Average pooling 레이어는 입력 데이터를 정해진 영역으로 나누어 각 영역의 평균값을 계산합니다. 이를 통해 입력 데이터의 공간적인 정보를 유지하면서, 데이터의 크기를 줄일 수 있습니다. 이는 Convolutional Neural Network에서 특징 맵의 크기를 줄이는데에 주로 사용됩니다.
backward_avgpool_layer
함수 이름: backward_avgpool_layer
입력:
l: avgpool 레이어 구조체
net: 네트워크 구조체
동작:
이 함수는 avgpool 레이어의 역전파(backpropagation)를 수행한다.
입력값으로 avgpool 레이어 구조체 l과 네트워크 구조체 net을 받아들인다.
각 배치(b)와 필터(k)에 대해, 델타값(delta)의 평균을 계산하고, 이를 각각의 입력값에 더해주어 역전파를 수행한다.
이를 통해 avgpool 레이어의 입력값에 대한 미분값(gradient)을 계산할 수 있다.
설명:
이 함수는 avgpool 레이어의 역전파를 구현한 것이다.
avgpool 레이어는 입력값을 작은 사각 영역으로 나누어 평균값을 구한 후 출력값으로 내보내는 레이어이다. 따라서 이 함수에서는 각각의 입력값에 대한 미분값을 구하는 것이 핵심이다.
델타값(delta)는 출력값과 동일한 차원을 가지고 있으며, 이 값은 이전 레이어의 미분값을 받아들이는 역할을 한다.
역전파 과정에서는, 이전 레이어의 미분값과 현재 레이어의 출력값을 이용하여 현재 레이어의 입력값에 대한 미분값을 계산한다.
avgpool 레이어의 경우 입력값을 평균화하는 과정이 필요하므로, 델타값의 평균을 구하여 각각의 입력값에 더해주어야 한다.
이를 위해 출력값의 인덱스(out_index)와 입력값의 인덱스(in_index)를 계산하여 값을 업데이트한다.
resize_avgpool_layer
함수 이름: resize_avgpool_layer
입력:
l: avgpool_layer 구조체 포인터
w: 너비
h: 높이
동작:
Average pooling 레이어의 입력 데이터 크기를 조정한다.
설명:
이 함수는 Average pooling 레이어의 입력 데이터 크기를 조정하는데 사다.
입력으로는 avgpool_layer 구조체 포인터와 새로운 입력 이미지의 폭(w)과 높이(h)를 받는다.
이 함수는 Average pooling 레이어의 w, h, inputs 변수를 입력받은 값으로 갱신한다.
이때, c는 그대로 유지된다.
Average pooling 레이어는 입력 데이터를 필터 크기(h, w)로 나누어 평균값을 계산하기 때문에, 입력 이미지 크기가 바뀌면 입력 데이터 크기(inputs)도 바뀌어야 한다.
된
Last updated