728x90
반응형
1. 순전파 : y1=x1*w1+x2*w2+1*b1, y2=x1*w3+x2*w4+1*b2
x1,x2=2,3
w1,w2=3,4
w3,w4=5,6
b1,b2=1,2
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
(y1,y2)
2. 평균 제곱 오차 : E=(y1-y1T)*(y1-y1T)/2+(y2-y2T)*(y2-y2T)/2
y1T,y2T=27,-30
E=(y1-y1T)**2/2+(y2-y2T)**2/2
E
3. 역전파 오차 : y1E=y1-y1T, y2E=y2-y2T
y1E=y1-y1T
y2E=y2-y2T
(y1E,y2E)
4. 입력 역전파 : x1E=y1E*w1+y2E*w3, x2E=y1E*w2+y2E*w4
5. 가중치, 편향 순전파
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
y1=w1*x1+w2*x2+b1*1
y2=w3*x1+w4*x2+b2*1
6. 가중치, 편향 역전파
w1E=y1E*x1
w2E=y1E*x2
b1E=y1E*1
w3E=y2E*x1
w4E=y2E*x2
b2E=y2E*1
w1E=y1E*x1
w2E=y1E*x2
b1E=y1E*1
w3E=y2E*x1
w4E=y2E*x2
b2E=y2E*1
(w1E,w2E,b1E)
(w3E,w4E,b2E)
7. 신경망 학습
w1-=lr*w1E
w2-=lr*w2E
b1-=lr*b1E
w3-=lr*w3E
w4-=lr*w4E
b2-=lr*b2E
lr=0.01
w1=w1-lr*w1E
w2=w2-lr*w2E
b1=b1-lr*b1E
w3=w3-lr*w3E
w4=w4-lr*w4E
b2=b2-lr*b2E
(w1,w2,b1)
(w3,w4,b2)
예제 1. 딥러닝 반복 학습하기
x1,x2=2,3
w1,w2=3,4
w3,w4=5,6
b1,b2=1,2
y1T,y2T=27,-30
lr=0.01
for epoch in range(200):
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
E=((y1-y1T)**2+(y2-y2T)**2)/2
y1E=y1-y1T
y2E=y2-y2T
w1E=y1E*x1
w2E=y1E*x2
b1E=y1E*1
w3E=y2E*x1
w4E=y2E*x2
b2E=y2E*1
w1=w1-lr*w1E
w2=w2-lr*w2E
b1=b1-lr*b1E
w3=w3-lr*w3E
w4=w4-lr*w4E
b2=b2-lr*b2E
print(f'epoch={epoch}')
print(f'y1:{y1:.3f}')
print(f'y2:{y2:.3f}')
print(f'w1:{w1:.3f}')
print(f'w2:{w2:.3f}')
print(f'b1:{b1:.3f}')
print(f'w3:{w3:.3f}')
print(f'w4:{w4:.3f}')
print(f'b2:{b2:.3f}')
if E < 0.0000001:
break
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 딥러닝 인공 신경망 구현하기 연습문제 2 (1) | 2023.10.28 |
---|---|
[딥러닝] 딥러닝 인공 신경망 구현하기 연습문제 1 (0) | 2023.10.28 |
[딥러닝] 딥러닝 동작원리 2입력 1출력 인공 신경망 구현하기 (1) | 2023.10.28 |
[딥러닝] 딥러닝 동작 원리 7가지(순전파, 역전파 등) (0) | 2023.10.28 |
[딥러닝] 알고리즘 파이썬 기반 XOR의 AND, NAND, OR 구현하기 (0) | 2023.10.27 |