즐거운프로그래밍

[딥러닝] 딥러닝 동작원리 2입력 1출력 인공 신경망 구현하기

수수께끼 고양이 2023. 10. 28. 20:48
728x90
반응형

 

1. 순전파 : y=x1*w1+x2*w2+1*b

x1,x2=2,3
w1,w2=3,4
b=1
y=x1*w1+x2*w2+1*b
y

 

 

 


2. 평균 제곱 오차 : E=(y-yT)*(y-yT)/2

yT=27
E=(y-yT)**2/2
E

 

 

 


3. 역전파 오차 : yE=y-yT

yE=y-yT
yE

 

 


4. 입력 역전파 : x1E=yE*w1, x2E=yE*w2

 

 


5. 가중치, 편향 순전파 : y=x1*w1+x2*w2+1*b, y=w1*x1+w2*x2+b*1

 

 


6. 가중치, 편향 역전파 : w1E=yE*x1, w1E=yE*x2 / bE=yE*1

w1E=yE*x1
w2E=yE*x2
bE=yE*1
(w1E,w2E,bE)

 

 

 


7. 신경망 학습 : w1-=lr*w1E, w2-=lr*w2E, b-=lr*bE

lr=0.01
w1=w1-lr*w1E
w2=w2=lr*w2E
b=b-lr*bE
(w1,w2,b)

 

 


예제 1. 딥러닝 학습 반복 수행하기

x1,x2=2,3
w1,w2=3,4
b=1
yT=27
lr=0.01

for epoch in range(200):
    y=x1*w1+x2*w2+1*b
    E=(y-yT)**2/2
    yE=y-yT
    w1E=yE*x1
    w2E=yE*x2
    bE=yE*1
    w1-=lr*w1E
    w2-=lr*w2E
    b=b-lr*bE
    
    print(f'epoch={epoch}')
    print(f'y:{y:.3f}')
    print(f'w1:{w1:.3f}')
    print(f'w2:{w2:.3f}')
    print(f'b:{b:.3f}')
    
    if E < 0.0000001: 
        break

 

 

 

 

728x90
반응형