| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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 |
- μ¬μ΄ν·λ°
- ν
- DROPTABLE
- CREATETABLE
- 무결μ±
- νμ΄μ¬
- sklearn
- μΈλλ³κ°λΉμ§μ»¬λ ν°
- μ μ¬μμλͺ¨λΈ
- 컨ν μ΄λκ°μ²΄
- 무결μ±μ μ§
- latent factor model
- ALTERTABLE
- knn_classify
- ν΄λ¦°μ½λ
- μκ³ λ¦¬μ¦
- λΆκ½λ°μ΄ν°μ
- λ¬Έμμ΄
- Hyperlink Graphs
- ν€ μ’ λ₯
- 무결μ±μ μ§λ©μ»€λμ¦
- latent factor
- μ£Όμ±λΆ μ°ΎκΈ°
- RENAMETABLE
- SQLDDL
- Python
- Key μ’ λ₯
- TDD
- SQL
- λ°±μ€
- Today
- Total
DonHurry
step49. Dataset ν΄λμ€μ μ μ²λ¦¬ λ³Έλ¬Έ
π’ λ³Έ ν¬μ€ν μ λ°λ°λ₯λΆν° μμνλ λ₯λ¬λ3μ κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€. λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ , κ°μΈμ μΈ κ³΅λΆλ₯Ό μν΄ μμ±νλ ν¬μ€ν μ λλ€. μμΈν λ΄μ©μ κ΅μ¬ ꡬ맀λ₯Ό κ°λ ₯ μΆμ²λ립λλ€.

μ΄λ² λ¨κ³μμλ μ λ² λ¨κ³μμ μ¬μ©νλ Dataset ν΄λμ€μ λν΄ μμΈν μ΄ν΄λ³΄κ² μ΅λλ€. μ¬μ©μκ° μ€μ λ‘ μ¬μ©νλ λ°μ΄ν°μ μ κΈ°λ° ν΄λμ€λ₯Ό μμλ°μ ꡬνν©λλ€. λ¨Όμ κΈ°λ° ν΄λμ€ μ½λλ₯Ό λ³΄κ² μ΅λλ€.
Dataset ν΄λμ€μμλ __getitem__κ³Ό __len__ λ©μλκ° μ€μν©λλ€. __len__ λ©μλλ len ν¨μλ₯Ό μ¬μ©ν λ νΈμΆλκ³ , __getitem__ λ©μλλ μ§μ λ μΈλ±μ€μ μμΉνλ λ°μ΄ν°λ₯Ό κΊΌλΌ λ μ¬μ©ν©λλ€. κΈ°λ³Έμ μΌλ‘ λ₯λ¬λ νμ΅μλ λ°μ΄ν°μ λΌλ²¨μ΄ νμνλ―λ‘, μμ±μμμ μ§μ ν΄μ£Όλλ‘ ν©λλ€. λ³κ°λ‘ transformμ λ°μ΄ν°μ μ μ²λ¦¬ μμ νμ©ν©λλ€. νμ΅νκΈ° μ λ°μ΄ν°μμ νΉμ κ°μ μ κ±°νκ±°λ, μ’μ° λ°μ λ±μ λ°μ΄ν° μλ₯Ό μΈμμ μΌλ‘ λ리λ κ²½μ°κ° λ§μ΅λλ€. μ΄λ¬ν μ μ²λ¦¬ κΈ°μ λ€μ λμνκΈ° μν΄ transform κΈ°λ₯μ μΆκ°ν©λλ€. λ§μ½ transformμ΄ μΈμλ‘ λ€μ΄μ€μ§ μλ κ²½μ° lambda x: xλ₯Ό ν΅ν΄ μλ³Έ λ°μ΄ν°λ₯Ό κ·Έλλ‘ λ°νν©λλ€.
class Dataset:
def __init__(self, train=True, transform=None, target_transform=None):
self.train = train
self.transform = transform
self.target_transform = target_transform
if self.transform is None:
self.transform = lambda x: x
if self.target_transform is None:
self.target_transform = lambda x: x
self.data = None
self.label = None
self.prepare()
def __getitem__(self, index):
assert np.isscalar(index)
if self.label is None:
return self.transform(self.data[index]), None
else:
return self.transform(self.data[index]),\
self.target_transform(self.label[index])
def __len__(self):
return len(self.data)
def prepare(self):
pass
μ΄μ μμ Dataset ν΄λμ€λ₯Ό μμ λ°μ μ€νμ΄λ΄ λ°μ΄ν°μ μ ꡬνν΄λ³΄κ² μ΅λλ€. μ¬μ€ ν΅μ¬ λ°μ΄ν° ꡬμ±μ get_spiral λ©μλμ ꡬνλμ΄μμ§λ§, μ΄λ° μμΌλ‘ Dataset ν΄λμ€λ₯Ό μμ λ°μ ꡬννλ€λ κ²λ§ μμλμλ©΄ λ©λλ€.
class Spiral(Dataset):
def prepare(self):
self.data, self.label = get_spiral(self.train)
λ§μ½ λ°μ΄ν°μ μ΄ μμ²λκ² ν° κ²½μ° λ€λ₯Έ λ°©μμ μ¬μ©ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄ data λλ ν°λ¦¬μ label λλ ν°λ¦¬μ κ°κ° 100λ§ κ°μ λ°μ΄ν°κ° μ μ₯λμ΄ μλ€λ©΄, BigData ν΄λμ€ μ΄κΈ°ν μμ λ°μ΄ν°λ₯Ό μ½λ κ²μ΄ μλλΌ λ°μ΄ν°μ μ κ·Όν λ μ½λλ‘ νλ κ²μ λλ€. np.loadλ 53λ¨κ³μμ μ€λͺ νλ€κ³ ν©λλ€.
class BigData(Dataset):
def __getitem__(index):
x = np.load('data/{}.npy'.format(index))
t = np.load('label/{}.npy'.format(index))
return x, t
def __len__():
return 1000000
μ΄μ νμ΅μ μ§ννκ² μ΅λλ€. μ΄μ κ³Ό λ¬λΌμ§ μ μ Datasetμ λΆλ¬μ¬ λ ν΄λμ€λ₯Ό νμ©νλ€λ μ μ λλ€. λν Spiral ν΄λμ€μμ λ°μ΄ν°λ₯Ό λ―Έλλ°°μΉλ‘ κ°μ Έμ¬ λμ μ½λκ° λ¬λΌμ‘μ΅λλ€. μ΄ λΆλΆμ μλμμ λ°λ‘ μ΄ν΄λ³΄κ² μ΅λλ€.
import math
import numpy as np
import dezero
import dezero.functions as F
from dezero import optimizers
from dezero.models import MLP
max_epoch = 300
batch_size = 30
hidden_size = 10
lr = 1.0
train_set = dezero.datasets.Spiral(train=True)
model = MLP((hidden_size, 3))
optimizer = optimizers.SGD(lr).setup(model)
data_size = len(train_set)
max_iters = math.ceil(data_size / batch_size)
for epoch in range(max_epoch):
index = np.random.permutation(data_size)
sum_loss = 0
for i in range(max_iters):
batch_index = index[i * batch_size:(i + 1) * batch_size]
batch = [train_set[i] for i in batch_index]
batch_x = np.array([example[0] for example in batch])
batch_t = np.array([example[1] for example in batch])
y = model(batch_x)
model.cleargrads()
loss = F.softmax_cross_entropy(y, batch_t)
loss.backward()
optimizer.update()
sum_loss += float(loss.data) * len(batch_t)
avg_loss = sum_loss / data_size
print('epoch %d, loss %.2f' % (epoch + 1, avg_loss))
λ¨Όμ μΈλ±μ€λ₯Ό μ§μ νμ¬ λ―Έλλ°°μΉλ₯Ό κΊΌλ λλ€. λ€μμΌλ‘ μΈλ±μ€μ λ°λΌ batchμ μ¬λ¬ λ°μ΄ν°λ₯Ό 리μ€νΈλ‘ μ μ₯ν©λλ€. λ€μμΌλ‘ batch_x, batch_tμ νλμ ndarray μΈμ€ν΄μ€λ‘ λ³ννμ¬ ν λΉν΄μ€λλ€. μ΄ κ³Όμ μ λ°λ³΅νμ¬ μ κ²½λ§μ λ―Έλλ°°μΉλ₯Ό μ λ ₯νμ¬ μ€λλ€.
train_set = dezero.datasets.Spiral()
batch_index = [0, 1, 2] # 0λ²μ§Έμμ 2λ²μ§ΈκΉμ§μ λ°μ΄ν° κΊΌλ΄κΈ°
batch = [train_set[i] for i in batch_index]
# batch = [(data_0, label_0), (data_1, label_1), (data_2, label_2)]
batch_x = np.array([example[0] for example in batch])
batch_t = np.array([example[1] for example in batch])
print(x.shape)
print(t.shape)
(3, 2)
(3,)
μμμ μ€λͺ νλ λ°μ΄ν° μ μ²λ¦¬ transformμ dezero/transform.pyμ μ¬λ¬ λ³ν μ²λ¦¬λ€μ΄ μ€λΉλμ΄ μλ€κ³ ν©λλ€. μ± μμ λ°λ‘ μ€λͺ νκ³ μμ§λ μμ΅λλ€. κ΄μ¬μλ λΆμ μ°Έκ³ νμλ©΄ μ’μ κ² κ°μ΅λλ€.
GitHub - WegraLee/deep-learning-from-scratch-3: γλ°λ°λ₯λΆν° μμνλ λ₯λ¬λ βΈγ(νλΉλ―Έλμ΄, 2020)
γλ°λ°λ₯λΆν° μμνλ λ₯λ¬λ βΈγ(νλΉλ―Έλμ΄, 2020). Contribute to WegraLee/deep-learning-from-scratch-3 development by creating an account on GitHub.
github.com
'DeZero > π»μ 4κ³ μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| step50. λ―Έλλ°°μΉλ₯Ό λ½μμ£Όλ DataLoader (0) | 2023.03.02 |
|---|---|
| step48. λ€μ€ ν΄λμ€ λΆλ₯ (0) | 2023.02.28 |
| step47. μννΈλ§₯μ€ ν¨μμ κ΅μ°¨ μνΈλ‘νΌ μ€μ°¨ (0) | 2023.02.27 |
| step46. Optimizerλ‘ μννλ λ§€κ°λ³μ κ°±μ (0) | 2023.02.25 |
| step45. κ³μΈ΅μ λͺ¨μλλ κ³μΈ΅ (0) | 2023.02.24 |