| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- CREATETABLE
- sklearn
- ALTERTABLE
- 컨ν μ΄λκ°μ²΄
- Python
- latent factor
- μΈλλ³κ°λΉμ§μ»¬λ ν°
- Hyperlink Graphs
- λΆκ½λ°μ΄ν°μ
- 무결μ±μ μ§λ©μ»€λμ¦
- 무결μ±μ μ§
- 무결μ±
- μ¬μ΄ν·λ°
- ν΄λ¦°μ½λ
- νμ΄μ¬
- latent factor model
- ν
- ν€ μ’ λ₯
- μ μ¬μμλͺ¨λΈ
- λ°±μ€
- SQLDDL
- Key μ’ λ₯
- TDD
- λ¬Έμμ΄
- RENAMETABLE
- SQL
- μ£Όμ±λΆ μ°ΎκΈ°
- knn_classify
- μκ³ λ¦¬μ¦
- DROPTABLE
- Today
- Total
DonHurry
step48. λ€μ€ ν΄λμ€ λΆλ₯ λ³Έλ¬Έ
π’ λ³Έ ν¬μ€ν μ λ°λ°λ₯λΆν° μμνλ λ₯λ¬λ3μ κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€. λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ , κ°μΈμ μΈ κ³΅λΆλ₯Ό μν΄ μμ±νλ ν¬μ€ν μ λλ€. μμΈν λ΄μ©μ κ΅μ¬ ꡬ맀λ₯Ό κ°λ ₯ μΆμ²λ립λλ€.

μ΄μ λ¨κ³μμ ꡬνν μννΈλ§₯μ€ ν¨μμ μνΈλ‘νΌ μ€μ°¨λ₯Ό νμ©νμ¬ λ€μ€ ν΄λμ€ λΆλ₯λ₯Ό ν΄λ³΄λλ‘ νκ² μ΅λλ€. μ΄λ² λ¨κ³μμλ μ€νμ΄λ΄ λ°μ΄ν°μ μ΄λΌλ μμ£Ό μμ λ°μ΄ν°μ μ μ¬μ©ν©λλ€. λ°μ΄ν°μ μ DeZeroμ dezero/datasets.pyμ μ€λΉλμ΄ μμ΅λλ€.
μ°μ μ€νμ΄λ΄ λ°μ΄ν°μ μ μ½μ΄μ λͺ¨μμ νμΈν΄λ³΄κ² μ΅λλ€. μ΄λ² λ¬Έμ λ μ΄ 3 ν΄λμ€ λΆλ₯ λ¬Έμ λ‘, μ λ΅ λ°μ΄ν°(λ μ΄λΈ) tμ μμλ 0, 1, 2 μ€ νλμ λλ€.
import dezero
x, t = dezero.datasets.get_spiral(train=True)
print(x.shape)
print(t.shape)
(300, 2)
(300,)

μ΄μ μ΄ νμ΅ μ½λλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€. μ£ΌμμΌλ‘ λ¬μλ λ²νΈλλ‘ μ€λͺ μ μ΄μ΄λκ°κ² μ΅λλ€.
import dezero
import math
import numpy as np
import matplotlib.pyplot as plt
from dezero import optimizers
import dezero.functions as F
from dezero.models import MLP
# 1: Hyperparameters
max_epoch = 300
batch_size = 30
hidden_size = 10
lr = 1.0
# 2: data, model, optimizer
x, t = dezero.datasets.get_spiral(train=True)
model = MLP((hidden_size, 3))
optimizer = optimizers.SGD(lr).setup(model)
data_size = len(x)
max_iter = math.ceil(data_size / batch_size)
for epoch in range(max_epoch):
# 3: Shuffle index for data
index = np.random.permutation(data_size)
sum_loss = 0
for i in range(max_iter):
# 4
batch_index = index[i * batch_size:(i + 1) * batch_size]
batch_x = x[batch_index]
batch_t = t[batch_index]
# 5
y = model(batch_x)
loss = F.softmax_cross_entropy(y, batch_t)
model.cleargrads()
loss.backward()
optimizer.update()
sum_loss += float(loss.data) * len(batch_t)
# 6: Print loss every epoch
avg_loss = sum_loss / data_size
print('epoch %d, loss %.2f' % (epoch + 1, avg_loss))
1λ²μμ νμ΄νΌνλΌλ―Έν°λ₯Ό μ€μ ν©λλ€. μλμΈ΅ μ, νμ΅λ₯ λ± μ¬λμ΄ μ§μ κ²°μ ν΄μΌνλ λ³μλ€μ λλ€. 2λ²μμλ λ°μ΄ν°μ μ μ½μ΄μ€κ³ , λͺ¨λΈκ³Ό μ΅ν°λ§μ΄μ λ₯Ό μμ±ν©λλ€. λν μ€λΉλ λ°μ΄ν°μ μ λͺ¨λ μ΄ν΄λ΄€μ λκ° 1 epoch μ λλ€. λ°°μΉ μ¬μ΄μ¦λ λ°μ΄ν°λ₯Ό ν λ²μ λͺκ°μ© λ¬Άμ΄μ μ²λ¦¬νλλ₯Ό λ»ν©λλ€.
3λ²μμλ λ°μ΄ν°μ μ μΈλ±μ€λ₯Ό 무μμλ‘ μμ΅λλ€. np.random.permutation ν¨μλ μΈμλ₯Ό NμΌλ‘ λ°μΌλ©΄, 0λΆν° N-1κΉμ§μ μ μκ° λ¬΄μμλ‘ λ°°μ΄λ 리μ€νΈλ₯Ό λ°νν©λλ€.
4λ²μμλ λ―Έλλ°°μΉλ₯Ό μμ±ν©λλ€. DeZeroμ ν¨μλ Variable νΉμ ndarray μΈμ€ν΄μ€λ₯Ό μ λ ₯μΌλ‘ λ°λλ°, batch_xμ batch_tλ ndarray μΈμ€ν΄μ€μ λλ€.
5λ²μμλ μ¬ν ν΄μλ κ²μ²λΌ γ±μΈκΈ°λ₯Ό ꡬνκ³ λ§€κ°λ³μλ₯Ό κ°±μ ν©λλ€. λ§μ§λ§μΌλ‘ 6λ²μμ μνλ§λ€ μμ€ ν¨μμ κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.
μ½λλ₯Ό μ€νν΄λ³΄λ©΄ μμ€μ΄ κ³μν΄μ μ€μ΄λλ κ²μ νμΈν μ μμ΅λλ€. μμ€ κ·Έλνλ‘ λνλ΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.

νμ΅μ΄ μλ£λ μ κ²½λ§μ΄ ν΄λμ€λ³ μμμ μ΄λ»κ² ꡬλΆνκ³ μλκ°λ μκ°νν΄λ³΄κ² μ΅λλ€. μ΄ ν΄λμ€λ³ μμμ κ²°μ κ²½κ³(decision boundary)λΌκ³ ν©λλ€. μκ°νλ μλ μ½λλ₯Ό μ€ννλ©΄ λ©λλ€.
# Plot boundary area the model predict
h = 0.001
x_min, x_max = x[:, 0].min() - .1, x[:, 0].max() + .1
y_min, y_max = x[:, 1].min() - .1, x[:, 1].max() + .1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
X = np.c_[xx.ravel(), yy.ravel()]
with dezero.no_grad():
score = model(X)
predict_cls = np.argmax(score.data, axis=1)
Z = predict_cls.reshape(xx.shape)
plt.contourf(xx, yy, Z)
# Plot data points of the dataset
N, CLS_NUM = 100, 3
markers = ['o', 'x', '^']
colors = ['orange', 'blue', 'green']
for i in range(len(x)):
c = t[i]
plt.scatter(x[i][0], x[i][1], s=40, marker=markers[c], c=colors[c])
plt.show()
κ²°κ³Όλ₯Ό 보면 μ κ²½λ§μ΄ μμ©λμ΄ ν¨ν΄μ μ λλ‘ νμ νκ³ μλ κ²μ νμΈν μ μμ΅λλ€. λΉμ ν λΆλ¦¬ μμμ νμ΅ν κ²μ΄μ£ . μ΄μ²λΌ μΈ΅μ λ κΉκ² μλ λ°©μμΌλ‘ ννλ ₯μ μ¦μ§μν¬ μ μλ€λ κ²μ΄ λ₯λ¬λμ νΉμ§μ λλ€.

'DeZero > π»μ 4κ³ μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| step50. λ―Έλλ°°μΉλ₯Ό λ½μμ£Όλ DataLoader (0) | 2023.03.02 |
|---|---|
| step49. Dataset ν΄λμ€μ μ μ²λ¦¬ (0) | 2023.03.01 |
| step47. μννΈλ§₯μ€ ν¨μμ κ΅μ°¨ μνΈλ‘νΌ μ€μ°¨ (0) | 2023.02.27 |
| step46. Optimizerλ‘ μννλ λ§€κ°λ³μ κ°±μ (0) | 2023.02.25 |
| step45. κ³μΈ΅μ λͺ¨μλλ κ³μΈ΅ (0) | 2023.02.24 |