728x90
반응형
numpy, matplotlib 라이브러리를 이용하여 딥러닝 학습
예제 1. w, b, E의 관계 살펴보기
import numpy as np # numpy 행렬
import matplotlib.pyplot as plt # matplotlib 그래프로 표현해줌
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(projection='3d')
ax.set_title("wbE",size=20)
ax.set_xlabel("w", size=14)
ax.set_xlabel("b", size=14)
ax.set_xlabel("E", size=14)
x=2
yT=10
w=np.random.uniform(-200,200,10000)
b=np.random.uniform(-200,200,10000)
y=x*w+b
E=(y-yT)**2/2
ax.plot(w, b, E, 'g.')
plt.show()
예제 2. numpy 연산 살펴보기
import numpy as np
x=2
yT=10
w=np.random.uniform(-2,2,4)
b=np.random.uniform(-2,2,4)
print('w:',w)
print('b:',b)
y=x*w+b
E=(y-yT)**2/2
print('x*y:',x*y)
print('y:',y)
print('E:',E)
예제 3. 학습 과정 살펴보기(1입력 1출력 인공 신경망 과정을 animation 기능을 이용하여 표현)
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(projection='3d')
ax.set_title("wbE",size=20)
ax.set_xlabel("w", size=14)
ax.set_xlabel("b", size=14)
ax.set_xlabel("E", size=14)
x=2
yT=10
w=np.random.uniform(2,7,10000)
b=np.random.uniform(0,4,10000)
y=x*w+b
E=(y-yT)**2/2
ax.plot(w, b, E, 'g.')
x=2
w=3
b=1
yT=10
lr=0.01
wbEs=[]
EPOCHS=200
for epoch in range(EPOCHS):
y=x*w+1*b
E=(y-yT)**2/2
yE=y-yT
wE=yE*x
bE=yE*1
w=w-lr*wE
b=b-lr*bE
wbEs.append(np.array([w,b,E]))
data=np.array(wbEs).T
line,=ax.plot([],[],[],'r.')
def animate(epoch,data,line):
print(epoch,data[2,epoch])
line.set_data(data[:2, :epoch])
line.set_3d_properties(data[2, :epoch])
from matplotlib.animation import FuncAnimation
ani=FuncAnimation(fig, animate, EPOCHS, fargs=(data, line), interval=20000/EPOCHS)
plt.show()
* 시작점 변경
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(projection='3d')
ax.set_title("wbE",size=20)
ax.set_xlabel("w", size=14)
ax.set_xlabel("b", size=14)
ax.set_xlabel("E", size=14)
x=2
yT=10
w=np.random.uniform(2,7,10000)
b=np.random.uniform(0,4,10000)
y=x*w+b
E=(y-yT)**2/2
ax.plot(w, b, E, 'g.')
x=2
w=6 # 시작점 변경
b=3 # 시작점 변경
yT=10
lr=0.01
wbEs=[]
EPOCHS=200
for epoch in range(EPOCHS):
y=x*w+1*b
E=(y-yT)**2/2
yE=y-yT
wE=yE*x
bE=yE*1
w=w-lr*wE
b=b-lr*bE
wbEs.append(np.array([w,b,E]))
data=np.array(wbEs).T
line,=ax.plot([],[],[],'r.')
def animate(epoch,data,line):
print(epoch,data[2,epoch])
line.set_data(data[:2, :epoch])
line.set_3d_properties(data[2, :epoch])
from matplotlib.animation import FuncAnimation
ani=FuncAnimation(fig, animate, EPOCHS, fargs=(data, line), interval=20000/EPOCHS)
plt.show()
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 딥러닝 활성화 함수 적용하기 (0) | 2023.10.28 |
---|---|
[딥러닝] 딥러닝 활성화 함수(sigmoid, ReLU, 계단 함수) (1) | 2023.10.28 |
[딥러닝] 딥러닝 인공 신경망 텐서플로(tensorflow)로 구현하기 연습문제 (0) | 2023.10.28 |
[딥러닝] 딥러닝 인공 신경망 텐서플로(tensorflow)로 구현하기 (0) | 2023.10.28 |
[딥러닝] 딥러닝 인공 신경망 구현하기 연습문제 2 (1) | 2023.10.28 |