local_layer
local_out_height
int local_out_height(local_layer l)
{
int h = l.h;
if (!l.pad) h -= l.size;
else h -= 1;
return h/l.stride + 1;
}ν¨μ μ΄λ¦: local_out_height
μ λ ₯:
local_layer l: λ‘컬 λ μ΄μ΄ ꡬ쑰체
λμ:
μ λ ₯μΌλ‘ λ°μ λ‘컬 λ μ΄μ΄μ λμ΄(height)μ λν μΆλ ₯ λμ΄(output height)λ₯Ό κ³μ°νλ€.
ν¨λ©(padding)μ΄ μ μ©λμ΄ μμ§ μμ κ²½μ° νν°(filter) ν¬κΈ°(size)λ§νΌ λμ΄λ₯Ό μ€μ΄κ³ , ν¨λ©μ΄ μ μ©λ κ²½μ° λμ΄μμ 1λ§νΌ λΉΌμ€λ€.
κ·Έλ¦¬κ³ λμ μΆλ ₯ λμ΄λ₯Ό κ³μ°νκΈ° μν΄ strideλ‘ λλκ³ 1μ λν΄μ€λ€.
μ€λͺ :
μ΄ ν¨μλ λ‘컬 λ μ΄μ΄μ μΆλ ₯ λμ΄λ₯Ό κ³μ°νλ ν¨μλ‘, νν°μ μ λ ₯ λ°μ΄ν°μ ν¬κΈ°, μ€νΈλΌμ΄λ λ±μ μ 보λ₯Ό μ΄μ©ν΄ κ³μ°νλ€.
μ΄ κ³μ°μ λ‘컬 λ μ΄μ΄μ μμ ν(forward propagation) λ¨κ³μμ νμνλ©°, μΆλ ₯ λμ΄λ₯Ό κ³μ°νλ κ²μ μΆλ ₯ λ°μ΄ν°μ ν¬κΈ°λ₯Ό κ²°μ νλ μ€μν μμ μ€ νλμ΄λ€.
local_out_width
ν¨μ μ΄λ¦: local_out_width
μ λ ₯:
local_layer l (λ‘컬 λ μ΄μ΄ ꡬ쑰체)
λμ:
λ‘컬 λ μ΄μ΄μ μΆλ ₯ λλΉλ₯Ό κ³μ°νμ¬ λ°νν©λλ€.
μ€λͺ :
μ λ ₯ μ΄λ―Έμ§μ λν΄ λ‘컬 νν°λ§μ μνν ν μΆλ ₯ μ΄λ―Έμ§μ λλΉλ₯Ό κ³μ°ν©λλ€.
λλΉλ ν¨λ©μ΄ μ μ©λ κ²½μ° μ λ ₯ λλΉμμ νν° ν¬κΈ°λ₯Ό λΊ κ°μ 1μ λν ν, μ€νΈλΌμ΄λλ‘ λλμ΄ κ³μ°λ©λλ€.
forward_local_layer
ν¨μ μ΄λ¦: forward_local_layer
μ λ ₯:
const local_layer l
network net
λμ:
λ‘컬 λ μ΄μ΄μ μμ ν μ°μ°μ μνν©λλ€.
μ λ ₯ λ°μ΄ν°λ₯Ό im2col λ°©μμΌλ‘ μ μ²λ¦¬νκ³ , 컀λκ³Όμ νλ ¬κ³±μ κ³μ°νμ¬ μΆλ ₯κ°μ μ»μ΅λλ€.
λ§μ§λ§μΌλ‘ νμ±ν ν¨μλ₯Ό μ μ©ν©λλ€.
μ€λͺ :
l: λ‘컬 λ μ΄μ΄μ μ 보λ₯Ό λ΄κ³ μλ ꡬ쑰체
net: λ€νΈμν¬ μ 보λ₯Ό λ΄κ³ μλ ꡬ쑰체
out_h: μΆλ ₯κ°μ λμ΄
out_w: μΆλ ₯κ°μ λλΉ
locations: μΆλ ₯κ°μ μ 체 ν¬κΈ°
biases: λ‘컬 λ μ΄μ΄μ νΈν₯κ°
input: λ€νΈμν¬μ μ λ ₯ λ°μ΄ν°
output: λ‘컬 λ μ΄μ΄μ μΆλ ₯κ°
weights: λ‘컬 λ μ΄μ΄μ κ°μ€μΉκ°
a: 컀λκ³Ό μ λ ₯κ°μ νλ ¬κ³±νκΈ° μν λ°°μ΄
b: im2col λ°©μμΌλ‘ μ μ²λ¦¬λ μ λ ₯κ°
c: μΆλ ₯κ°μ μ μ₯νκΈ° μν λ°°μ΄
m, n, k: νλ ¬κ³±μ μν λ§€κ°λ³μ
activate_array: νμ±ν ν¨μλ₯Ό μ μ©νλ ν¨μ
backward_local_layer
ν¨μ μ΄λ¦: backward_local_layer
μ λ ₯:
local_layer ꡬ쑰체 l
network ꡬ쑰체 net
λμ:
local_layerλ₯Ό μμ ννλ ν¨μμ λλ€.
μΆλ ₯κ°μ λν λΈνλ₯Ό κ³μ°νκ³ , λ°μ΄μ΄μ€ μ λ°μ΄νΈ λ° κ°μ€μΉ μ λ°μ΄νΈλ₯Ό μνν©λλ€.
μ΄ν μ λ ₯κ°μ λν λΈνλ₯Ό κ³μ°ν©λλ€.
μ€λͺ :
l.delta: μΆλ ₯κ°μ λΈνλ₯Ό μ μ₯νλ λ°°μ΄
l.bias_updates: λ°μ΄μ΄μ€ μ λ°μ΄νΈλ₯Ό μ μ₯νλ λ°°μ΄
l.weight_updates: κ°μ€μΉ μ λ°μ΄νΈλ₯Ό μ μ₯νλ λ°°μ΄
net.workspace: im2col μ°μ°μ κ²°κ³Όλ₯Ό μ μ₯νλ λ°°μ΄
net.delta: μ΄μ λ μ΄μ΄μ λΈνλ₯Ό μ μ₯νλ λ°°μ΄
μΆλ ₯κ°μ λν λΈνλ₯Ό κ³μ°ν©λλ€.
λͺ¨λ λ°°μΉμ λν΄ λ°μ΄μ΄μ€ μ λ°μ΄νΈλ₯Ό μνν©λλ€.
λͺ¨λ λ°°μΉμ λν΄ im2col μ°μ°μ μνν©λλ€.
λͺ¨λ λ°°μΉ λ° μμΉμ λν΄ κ°μ€μΉ μ λ°μ΄νΈλ₯Ό μνν©λλ€.
μ΄μ λ μ΄μ΄μ λΈνλ₯Ό κ³μ°νκ³ net.delta λ°°μ΄μ μ μ₯ν©λλ€.
update_local_layer
ν¨μ μ΄λ¦: update_local_layer
μ λ ₯:
local_layer l: λ‘컬 λ μ΄μ΄ κ°μ²΄
update_args a: μ λ°μ΄νΈ μΈμ κ°μ²΄
λμ:
λ‘컬 λ μ΄μ΄μ κ°μ€μΉμ νΈν₯μ μ λ°μ΄νΈνλ ν¨μμ λλ€.
μ λ°μ΄νΈλ κ²½μ¬ νκ°λ²μ μ¬μ©νμ¬ μνλ©λλ€.
νΈν₯μ λ°°μΉ ν¬κΈ°λ‘ λλ νμ΅λ₯ κ³Ό λͺ¨λ©ν μ μ¬μ©νμ¬ μ λ°μ΄νΈνκ³ , κ°μ€μΉλ νμ΅λ₯ κ³Ό κ°μ€μΉ κ°μ , λͺ¨λ©ν μ μ¬μ©νμ¬ μ λ°μ΄νΈν©λλ€.
μ€λͺ :
local_layer: λ‘컬 λ μ΄μ΄ κ°μ²΄λ‘, λ‘컬 λ μ΄μ΄μ μΆλ ₯, κ°μ€μΉ, νΈν₯ λ±μ μ 보λ₯Ό μ μ₯ν©λλ€.
update_args: μ λ°μ΄νΈ μΈμ κ°μ²΄λ‘, νμ΅λ₯ , λͺ¨λ©ν , κ°μ€μΉ κ°μ , λ°°μΉ ν¬κΈ° λ±μ μ λ°μ΄νΈμ νμν μ 보λ₯Ό μ μ₯ν©λλ€.
axpy_cpu(): λ²‘ν° λ§μ κ³Ό μ€μΉΌλΌ κ³±μ μννλ ν¨μμ λλ€.
scal_cpu(): 벑ν°λ₯Ό μ€μΉΌλΌλ‘ κ³±νλ ν¨μμ λλ€.
make_local_layer
ν¨μ μ΄λ¦: make_local_layer
μ λ ₯:
int batch: λ°°μΉ ν¬κΈ°
int h: μ λ ₯ μ΄λ―Έμ§ λμ΄
int w: μ λ ₯ μ΄λ―Έμ§ λλΉ
int c: μ λ ₯ μ΄λ―Έμ§ μ±λ μ
int n: νν° μ
int size: νν° ν¬κΈ°
int stride: μ€νΈλΌμ΄λ
int pad: ν¨λ©
ACTIVATION activation: νμ±ν ν¨μ
λμ:
λ‘컬 λ μ΄μ΄λ₯Ό μμ±νκ³ μ΄κΈ°νν ν λ°ννλ€.
μ€λͺ :
λ‘컬 λ μ΄μ΄λ₯Ό μ΄κΈ°ννκΈ° μν΄ νμν νλΌλ―Έν°λ₯Ό μ λ ₯μΌλ‘ λ°λλ€.
λ‘컬 λ μ΄μ΄μ μΆλ ₯ ν¬κΈ°μ νμν λ©λͺ¨λ¦¬λ₯Ό κ³μ°νλ€.
λ‘컬 λ μ΄μ΄μ κ°μ€μΉ, νΈν₯, μΆλ ₯, λΈν, κ°μ€μΉ μ λ°μ΄νΈ, νΈν₯ μ λ°μ΄νΈ λ±μ μ μ₯ν λ©λͺ¨λ¦¬λ₯Ό ν λΉνλ€.
κ°μ€μΉλ sqrt(2./(sizesizec))λ‘ μ€μΌμΌλ§λ κ°μΌλ‘ μ΄κΈ°ννλ©°, νΈν₯μ 0μΌλ‘ μ΄κΈ°ννλ€.
λ‘컬 λ μ΄μ΄μ forward, backward, update ν¨μλ₯Ό μ€μ νλ€.
μ΄κΈ°νλ λ‘컬 λ μ΄μ΄λ₯Ό λ°ννλ€.
Last updated
Was this helpful?