728x90
반응형
연습문제 1. 2입력 3출력 인공신경망을 구현하고 학습하기
공식 정리
# 순전파
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
y3=x1*w5+x2*w6+1*b3
# 평균 제곱 오차
E=(y1-y1T)**2/2+(y2-y2T)**2/2+(y3-y3T)**2/2
# 역전파 오차
y1E=y1-y1T
y2E=y2-y2T
y3E=y3-y3T
# 입력 역전파
x1E=y1E*w1+y2E*w3+y3E*w5
x2E=y1E*w2+y2E*w4+y2E*w6
#가중치, 편향 순전파
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
y3=x1*w5+x2*w6+1*b3
y1=w1*x1+w2*x2+b1*1
y2=w3*x1+w4*x2+b2*1
y3=w5*x1+w6*x2+b3*1
# 가중치, 편향 역전파
w1E=y1E*x1
w2E=y1E*x2
b1E=y1E*1
w3E=y2E*x1
w4E=y2E*x2
b2E=y2E*1
w5E=y3E*x1
w6E=y3E*x2
b3E=y3E*1
# 신경망 학습
w1-=lr*w1E
w2-=lr*w2E
b1-=lr*b1E
w3-=lr*w3E
w4-=lr*w4E
b2-=lr*b2E
w5-=lr*w5E
w6-=lr*w6E
b3-=lr*b3E
인공학습망 구현하고 학습 (학습률 0.01)
x1,x2=0.05,0.10
w1,w2=0.15,0.20
w3,w4=0.25,0.30
w5,w6=0.40,0.55
b1,b2,b3=0.35,0.45,0.60
y1T,y2T,y3T=0.01,0.99,0.50
lr=0.01
for epoch in range(2000):
y1=x1*w1+x2*w2+1*b1
y2=x1*w3+x2*w4+1*b2
y3=x1*w5+x2*w6+1*b3
E=(y1-y1T)**2/2+(y2-y2T)**2/2+(y3-y3T)**2/2
y1E=y1-y1T
y2E=y2-y2T
y3E=y3-y3T
w1E=y1E*x1
w2E=y1E*x2
b1E=y1E*1
w3E=y2E*x1
w4E=y2E*x2
b2E=y2E*1
w5E=y3E*x1
w6E=y3E*x2
b3E=y3E*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
w5=w5-lr*w5E
w6=w6-lr*w6E
b3=b3-lr*b3E
print(f'epoch={epoch}')
print(f'y1:{y1:.3f}')
print(f'y2:{y2:.3f}')
print(f'y3:{y3:.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}')
print(f'w5:{w5:.3f}')
print(f'w6:{w6:.3f}')
print(f'b3:{b3:.3f}')
if E < 0.0000001:
break
연습문제 2. 3입력 2출력 인공신경망을 구현하고 학습하기
x1,x2,x3=0.02,0.05,0.12
w1,w2=0.15,0.20
w3,w4=0.02,0.27
w5,w6=0.37,0.52
b1,b2=0.12,0.39
y1T,y2T=0.02,0.98
lr=0.01
for epoch in range(2000):
y1=x1*w1+x2*w2+x3*w3+1*b1
y2=x1*w4+x2*w5+x3*w6+1*b2
E=((y1-y1T)**2+(y2-y2T)**2)/2
y1E=y1-y1T
y2E=y2-y2T
w1E=y1E*x1
w2E=y1E*x2
w3E=y1E*x3
b1E=y1E*1
w4E=y2E*x1
w5E=y2E*x2
w6E=y2E*x3
b2E=y2E*1
w1=w1-lr*w1E
w2=w2-lr*w2E
w3=w3-lr*w3E
b1=b1-lr*b1E
w4=w4-lr*w4E
w5=w5-lr*w5E
w6=w6-lr*w6E
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'w3:{w3:.3f}')
print(f'b1:{b1:.3f}')
print(f'w4:{w4:.3f}')
print(f'w5:{w5:.3f}')
print(f'w6:{w6:.3f}')
print(f'b2:{b2:.3f}')
if E < 0.0000001:
break
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 딥러닝 인공 신경망 텐서플로(tensorflow)로 구현하기 (0) | 2023.10.28 |
---|---|
[딥러닝] 딥러닝 인공 신경망 구현하기 연습문제 2 (1) | 2023.10.28 |
[딥러닝] 딥러닝 동작원리 2입력 2출력 인공 신경망 구현하기 (0) | 2023.10.28 |
[딥러닝] 딥러닝 동작원리 2입력 1출력 인공 신경망 구현하기 (1) | 2023.10.28 |
[딥러닝] 딥러닝 동작 원리 7가지(순전파, 역전파 등) (0) | 2023.10.28 |