maxpool
Max Pooling Layer ๋?
Max Pooling Layer๋ Convolutional Neural Network(CNN)์ ๊ตฌ์ฑ ์์ ์ค ํ๋์ ๋๋ค. CNN์ ์ด๋ฏธ์ง, ์์ฑ ๋๋ ๋น๋์ค์ ๊ฐ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์ ์ Convolutional Layer์์ ์์ฑ๋ feature map์ ๋ค์ด ์ํ๋งํ์ฌ ๊ณต๊ฐ ํด์๋๋ฅผ ์ค์ด๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ๊ฐ ๊ณผ์ ํฉ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ฐ์ฐ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
Max Pooling Layer๋ ๊ฐ feature map์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ํํ์ฌ ์ถ๋ ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด feature map์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๊ณ , ์ด๋ฏธ์ง์ ์์น ์ด๋์ ๋ํ ๋ถ๋ณ์ฑ(invariance)์ด ์ฆ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ค ์ด๋ฏธ์ง ๋ด์์ ๊ฐ์ ์ผ๊ตด์ด ์์ ๋, ๊ฐ์ ์์น๊ฐ ๋ค๋ฅด๋๋ผ๋ Max Pooling Layer๋ ๊ฐ์ ํน์ง์ ์ธ์ํ๋๋ก ๋์์ค๋๋ค.
์ผ๋ฐ์ ์ผ๋ก, Max Pooling Layer๋ 2x2์ ์๋์ฐ์ 2์ ์คํธ๋ผ์ด๋(stride)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค. ์ด๋ ์ ๋ ฅ feature map์ 2๋ฐฐ๋ก ๋ค์ด์ํ๋งํ์ฌ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋์ฐ ํฌ๊ธฐ์ ์คํธ๋ผ์ด๋ ํฌ๊ธฐ๋ ๋ฌธ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. Max Pooling Layer๋ ํ์ต ๊ฐ๋ฅํ ๋งค๊ฐ ๋ณ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ํ๋ผ๋ฏธํฐ ์๋ฅผ ์ค์ด๊ณ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
make_maxpool_layer
maxpool_layer make_maxpool_layer(int batch, int h, int w, int c, int size, int stride, int padding)
{
maxpool_layer l = {0};
l.type = MAXPOOL;
l.batch = batch;
l.h = h;
l.w = w;
l.c = c;
l.pad = padding;
l.out_w = (w + padding - size)/stride + 1;
l.out_h = (h + padding - size)/stride + 1;
l.out_c = c;
l.outputs = l.out_h * l.out_w * l.out_c;
l.inputs = h*w*c;
l.size = size;
l.stride = stride;
int output_size = l.out_h * l.out_w * l.out_c * batch;
l.indexes = calloc(output_size, sizeof(int));
l.output = calloc(output_size, sizeof(float));
l.delta = calloc(output_size, sizeof(float));
l.forward = forward_maxpool_layer;
l.backward = backward_maxpool_layer;
fprintf(stderr, "max %d x %d / %d %4d x%4d x%4d -> %4d x%4d x%4d\n", size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c);
return l;
}ํจ์ ์ด๋ฆ: make_maxpool_layer
์ ๋ ฅ:
batch: int ํํ์ ๋ฐฐ์น ํฌ๊ธฐ
h: int ํํ์ ์ ๋ ฅ ์ด๋ฏธ์ง ๋์ด
w: int ํํ์ ์ ๋ ฅ ์ด๋ฏธ์ง ๋๋น
c: int ํํ์ ์ ๋ ฅ ์ด๋ฏธ์ง ์ฑ๋ ์
size: int ํํ์ ๋งฅ์คํ๋ง ํํฐ ํฌ๊ธฐ
stride: int ํํ์ ๋งฅ์คํ๋ง ์คํธ๋ผ์ด๋ ํฌ๊ธฐ
padding: int ํํ์ ํจ๋ฉ ํฌ๊ธฐ
๋์:
๋งฅ์คํ๋ง ๋ ์ด์ด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ ๋ค ๋ฐํํ๋ค.
์ถ๋ ฅ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ์ฌ ์ด๊ธฐํํ๋ฉฐ, ์์ ํ์ ์ญ์ ํ ํจ์๋ฅผ ์ค์ ํ๋ค.
์ค๋ช :
l: maxpool_layer ๊ตฌ์กฐ์ฒด ๋ณ์
l.type: ๋ ์ด์ด ํ์ ์ผ๋ก MAXPOOL๋ก ์ค์
l.out_c: ์ถ๋ ฅ ์ด๋ฏธ์ง ์ฑ๋ ์๋ก ์ ๋ ฅ ์ด๋ฏธ์ง ์ฑ๋ ์์ ๊ฐ๊ฒ ์ค์
l.outputs: ์ถ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ(๋์ดx๋๋นx์ฑ๋ ์)๋ก ์ถ๋ ฅ ํฌ๊ธฐ ๊ณ์ฐ
l.inputs: ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ(๋์ดx๋๋นx์ฑ๋ ์)๋ก ์ ๋ ฅ ํฌ๊ธฐ ๊ณ์ฐ
l.indexes: ๋งฅ์คํ๋ง ์ฐ์ฐ์์ ์ต๋๊ฐ ์์น๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํ ๋ฐฐ์ด ๋์ ํ ๋น
l.output: ๋งฅ์คํ๋ง ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐฐ์ด ๋์ ํ ๋น
l.delta: ์ญ์ ํ ๊ณผ์ ์์ ๊ณ์ฐ๋ ๊ทธ๋๋์ธํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐฐ์ด ๋์ ํ ๋น
l.forward: ๋งฅ์คํ๋ง ๋ ์ด์ด์ ์์ ํ ์ฐ์ฐ ํจ์ ํฌ์ธํฐ ์ค์
l.backward: ๋งฅ์คํ๋ง ๋ ์ด์ด์ ์ญ์ ํ ์ฐ์ฐ ํจ์ ํฌ์ธํฐ ์ค์
fprintf: ๋๋ฒ๊น ์ฉ์ผ๋ก ๋งฅ์คํ๋ง ๋ ์ด์ด์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅ
forward_maxpool_layer
ํจ์ ์ด๋ฆ: forward_maxpool_layer
์ ๋ ฅ:
const maxpool_layer l: Max pooling ๋ ์ด์ด๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด
network net: ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด
๋์:
์ฃผ์ด์ง Max pooling ๋ ์ด์ด ๊ตฌ์กฐ์ฒด l๊ณผ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ์ฒด net๋ฅผ ์ฌ์ฉํ์ฌ Max pooling ๋ ์ด์ด๋ฅผ ์์ ํํ๋ ํจ์์ด๋ค. ์ด ํจ์๋ ์ ๋ ฅ๊ฐ์์ Max pooling ์ฐ์ฐ์ ์ํํ์ฌ ์ถ๋ ฅ๊ฐ์ ๊ณ์ฐํ๋ค. Max pooling ์ฐ์ฐ์ ๊ฐ ์๋์ฐ ๋ด์ ์ต๋๊ฐ์ ์ฐพ์ ์ถ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
์ค๋ช :
์ด ํจ์๋ Max pooling ๋ ์ด์ด์์ ์ฌ์ฉ๋๋ forward propagation ํจ์์ด๋ค. ์ ๋ ฅ๊ฐ์ผ๋ก๋ Max pooling ๋ ์ด์ด๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด l๊ณผ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ์ฒด net์ด ์ฃผ์ด์ง๋ค. Max pooling ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ๊ตฌ์กฐ์ฒด l์ output ๋ฐฐ์ด์ ์ ์ฅ๋๋ค. Max pooling ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด, ์ ๋ ฅ๊ฐ์์ Max pooling ์ฐ์ฐ์ ์ํํ๋๋ฐ, ์ด๋ฅผ ์ํด ์ ๋ ฅ๊ฐ์์ ์๋์ฐ๋ฅผ ์ด๋ํ๋ฉด์ ๊ฐ ์๋์ฐ ๋ด์ ์ต๋๊ฐ์ ์ฐพ์ ์ถ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
์ด ํจ์๋ ์ ๋ ฅ๊ฐ์ ๋ฐฐ์น ํฌ๊ธฐ l.batch, ์ถ๋ ฅ๊ฐ์ ๋์ด l.out_h, ์ถ๋ ฅ๊ฐ์ ๋๋น l.out_w, ์ฑ๋ ์ l.c, ํจ๋ฉ ํฌ๊ธฐ l.pad, ์คํธ๋ผ์ด๋ ํฌ๊ธฐ l.stride, ์๋์ฐ ํฌ๊ธฐ l.size ๋ฑ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ค. ์ด ํจ์์์๋ ์ ๋ ฅ๊ฐ์์ ์๋์ฐ๋ฅผ ์ด๋ํ๋ฉด์ ๊ฐ ์๋์ฐ ๋ด์ ์ต๋๊ฐ์ ์ฐพ๊ณ , ๊ตฌ์กฐ์ฒด l์ output ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ์ต๋๊ฐ์ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ตฌ์กฐ์ฒด l์ indexes ๋ฐฐ์ด๋ ํจ๊ป ์ ๋ฐ์ดํธํ๋ค.
์ด ํจ์๋ for๋ฌธ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ๊ฐ์ ๋ชจ๋ ์์น์ ๋ํด Max pooling ์ฐ์ฐ์ ์ํํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ์ ๋ ฅ๊ฐ์ ๋ฐฐ์น๋ณ๋ก, ์ฑ๋๋ณ๋ก, ์ถ๋ ฅ๊ฐ์ ์์น๋ณ๋ก ์ ๋ ฅ๊ฐ์์ ์๋์ฐ๋ฅผ ์ด๋ํ๋ฉด์ ์ต๋๊ฐ์ ์ฐพ๋๋ค. ์ ๋ ฅ๊ฐ์์ ์๋์ฐ๋ฅผ ์ด๋ํ๊ธฐ ์ํด h_offset๊ณผ w_offset์ ์ฌ์ฉํ๋ฉฐ, ์ด ๊ฐ์ ํจ๋ฉ ์ ๋ณด์ ์คํธ๋ผ์ด๋ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ณ์ฐ๋๋ค. ์ต๋๊ฐ์ ์ฐพ์ ๋๋ ์๋์ฐ ๋ด์ ๋ชจ๋ ๊ฐ๊ณผ ๋น๊ตํ๋ฉด์ ์ต๋๊ฐ๊ณผ ์ต๋๊ฐ์ ์์น๋ฅผ ์ฐพ๋๋ค. ์ต๋๊ฐ์ ์ถ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ต๋๊ฐ์ ์์น ์ ๋ณด๋ indexes ๋ฐฐ์ด์ ์ ์ฅ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ด ํจ์๋ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ ๋ฑ์ ์ํํ๋ค.
backward_maxpool_layer
ํจ์ ์ด๋ฆ: backward_maxpool_layer
์ ๋ ฅ:
maxpool_layer l (maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด)
network net (๋ด๋ด ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด)
๋์:
maxpool ๋ ์ด์ด์ ์ญ์ ํ๋ฅผ ์ํํ์ฌ, ๋ด๋ด ๋คํธ์ํฌ์ delta ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
์ญ์ ํ ์ํ์ ์ํด, maxpool ๋ ์ด์ด์์ ์ฌ์ฉ๋ max ๊ฐ์ ๊ฐ์ง๋ ์์๋ค์ ์ธ๋ฑ์ค๋ฅผ l.indexes ๋ฐฐ์ด์ ์ ์ฅํด ๋์์ผ๋ฉฐ, ์ด๋ฅผ ์ด์ฉํ์ฌ delta ๊ฐ์ ํด๋น ์ธ๋ฑ์ค์ ์์์ ๋ํด์ค๋ค.
์ค๋ช :
์ ๋ ฅ์ผ๋ก ๋ค์ด์จ maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด l๊ณผ ๋ด๋ด ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด net์ ์ด์ฉํ์ฌ, maxpool ๋ ์ด์ด์ ์ญ์ ํ๋ฅผ ์ํํ๋ค.
l.indexes ๋ฐฐ์ด์๋ max ๊ฐ์ ๊ฐ์ง๋ ์์๋ค์ ์ธ๋ฑ์ค๊ฐ ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก, ์ด๋ฅผ ์ด์ฉํ์ฌ net.delta ๋ฐฐ์ด์ ํด๋น ์ธ๋ฑ์ค์ ์์์ l.delta ๋ฐฐ์ด์ ๊ฐ์ ๋ํด์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด, maxpool ๋ ์ด์ด๋ก ์ ๋ฌ๋ ๋ธํ ๊ฐ์ด ์ด์ ๋ ์ด์ด๋ก ์ญ์ ํ๋๋ฉฐ, ๋คํธ์ํฌ์ ํ์ต์ด ์ด๋ฃจ์ด์ง๋ค.
get_maxpool_image
ํจ์ ์ด๋ฆ: get_maxpool_image
์ ๋ ฅ:
maxpool_layer ๊ตฌ์กฐ์ฒด l
๋์:
max pooling ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ์ด๋ฏธ์ง ํํ๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
์ค๋ช :
max pooling ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ํน์ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ก ๋ณํํ ํ, float_to_image ํจ์๋ฅผ ์ด์ฉํ์ฌ image ํํ๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
์ถ๋ ฅ๊ฐ์ ์ด๋ฏธ์ง ํํ๋ก ๋ณํํ๋ ์ด์ ๋ ์ด๋ฏธ์ง๋ฅผ ์๊ฐํํ์ฌ max pooling ๋ ์ด์ด๊ฐ ์ด๋ค ์์ ์ ์ํํ๋์ง ์ฝ๊ฒ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
get_maxpool_delta
ํจ์ ์ด๋ฆ: get_maxpool_delta
์ ๋ ฅ:
maxpool_layer l (maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด)
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ maxpool ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ๋ํ delta ๊ฐ์ ๊ฐ์ง๊ณ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์ฌ ๋ฐํํฉ๋๋ค.
์์ฑ๋ ์ด๋ฏธ์ง๋ float_to_image ํจ์๋ฅผ ํตํด float ํ์์ผ๋ก ๋ณํ๋ฉ๋๋ค.
์ค๋ช :
maxpool ๋ ์ด์ด๋ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ต๋๊ฐ ํ๋ง ์ฐ์ฐ์ ํตํด ์ถ์ํ ํ ์ถ๋ ฅ๊ฐ์ ์์ฑํฉ๋๋ค.
์ด๋, ์์ค ํจ์์ ์ญ์ ํ๋ฅผ ์ํด ์ด์ ๋ ์ด์ด์์ ์ ๋ฌ๋ delta ๊ฐ์ maxpool ๋ ์ด์ด์์๋ ๊ทธ๋๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ด ํจ์๋ ์ด๋ฌํ delta ๊ฐ์ ์ด์ฉํ์ฌ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ๋ฐํํฉ๋๋ค. ์ด๋, ์์ฑ๋ ์ด๋ฏธ์ง์ ๋๋น, ๋์ด, ์ฑ๋ ์๋ maxpool ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ๊ณผ ๋์ผํฉ๋๋ค.
resize_maxpool_layer
ํจ์ ์ด๋ฆ: resize_maxpool_layer ์ ๋ ฅ:
maxpool_layer *l : maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
int w : ๋ณ๊ฒฝํ ๋๋น
int h : ๋ณ๊ฒฝํ ๋์ด
๋์:
์ ๋ ฅ๋ฐ์ maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ(*l)์ w์ h ํ๋๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ณ , ๊ทธ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋๋ค๋ ์๋ก ๊ณ์ฐํ์ฌ ์ ๋ฐ์ดํธํ๋ค. ์๋กญ๊ฒ ๊ณ์ฐ๋ ํ๋๋ค์ ๋ค์๊ณผ ๊ฐ๋ค:
inputs : ์ ๋ ฅ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๊ฐ์(h * w * c)
out_w : ์ถ๋ ฅ ์ด๋ฏธ์ง์ ๋๋น
out_h : ์ถ๋ ฅ ์ด๋ฏธ์ง์ ๋์ด
outputs : ์ถ๋ ฅ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๊ฐ์(out_w * out_h * c)
indexes : ์ถ๋ ฅ๊ฐ ์ค ์ต๋๊ฐ์ ์์น๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์ output_size ํฌ๊ธฐ๋ก ์ฌํ ๋นํ๋ค.
output : ์ถ๋ ฅ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด์ output_size ํฌ๊ธฐ๋ก ์ฌํ ๋นํ๋ค.
delta : ์ถ๋ ฅ๊ฐ์ ๋ํ ๋ฏธ๋ถ๊ฐ(gradient)์ ์ ์ฅํ๋ ๋ฐฐ์ด์ output_size ํฌ๊ธฐ๋ก ์ฌํ ๋นํ๋ค.
์ค๋ช :
์ด ํจ์๋ maxpool ๋ ์ด์ด์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ธฐ ์ํ ํจ์์ด๋ค.
์ ๋ ฅ๋ฐ์ maxpool ๋ ์ด์ด ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ(*l)์ w์ h ํ๋๋ฅผ ๋ณ๊ฒฝํ ๋ค, ์ด ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋๋ค๋ ์ ๋ฐ์ดํธํ๋ค. ์ด ๋, maxpool ๋ ์ด์ด๋ ์ ๋ ฅ ์ด๋ฏธ์ง์์ stride์ size๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต๋๊ฐ์ ์ถ์ถํ์ฌ ์ถ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ ์ด์ด์ด๋ค.
์ด ํจ์์์๋ ์ ๋ ฅ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๊ฐ์(inputs), ์ถ๋ ฅ ์ด๋ฏธ์ง์ ๋๋น(out_w)์ ๋์ด(out_h), ์ถ๋ ฅ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๊ฐ์(outputs)๋ฅผ ์๋กญ๊ฒ ๊ณ์ฐํ๋ค.
๋ํ, ์ถ๋ ฅ๊ฐ ์ค ์ต๋๊ฐ์ ์์น๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด(indexes), ์ถ๋ ฅ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด(output), ๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅ๊ฐ์ ๋ํ ๋ฏธ๋ถ๊ฐ(gradient)์ ์ ์ฅํ๋ ๋ฐฐ์ด(delta)์ ์ฌํ ๋นํ๋ค.
์ด๋ ๊ฒ ํ์ํ ํ๋๋ค์ ์๋กญ๊ฒ ๊ณ์ฐํ๊ณ ์ฌํ ๋นํจ์ผ๋ก์จ, maxpool ๋ ์ด์ด์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.
Last updated
Was this helpful?