chainer의 작법 그 2
개요
chainer의 작법, 조사해 보았다.
회귀.
가져오기
import numpy as np
import matplotlib.pyplot as plt
import chainer
from chainer import Function, gradient_check, Variable, optimizers, serializers, utils
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L
교육 데이터 세트 반복
-3.0 ~ +3.0의 100점
sin이 교사 데이터
dataset, iterator는 사용하지 않습니다.
X = np.linspace(-3.0, 3.0, num = 100, dtype = np.float32)
T = np.sin(X)
미니 배치에 대한 전처리
에포크는 300
미니 배치는 100
n_epoch = 300
n_batch = 100
신경망의 Forward/backward 계산
회귀이므로 활성화 함수는 tanh
loss는 mean_squared
class MLP(Chain):
def __init__(self):
super(MLP, self).__init__(l1 = L.Linear(1, 20), l2 = L.Linear(20, 1), )
def __call__(self, x):
h = F.tanh(self.l1(x))
out = self.l2(h)
return out
class M_fit(Chain):
def __init__(self, predictor):
super(M_fit, self).__init__(predictor = predictor)
def __call__(self, x, t):
y = self.predictor(x)
loss = F.mean_squared_error(y, t) * 0.5
return loss
def predict(self, x):
y = self.predictor(x)
return y
매개변수 업데이트
옵티마이저는 Adam
optimizer = optimizers.Adam()
optimizer.setup(model)
평가 데이터 세트에서 현재 파라미터 평가
Variable에 데이터를 흘려 넣는다.
for epoch in range(n_epoch):
indexes = np.random.permutation(np.size(X))
for i in range(n_batch):
model.zerograds()
x = Variable(np.array([[X[indexes[i]]]], dtype = np.float32))
t = Variable(np.array([[T[indexes[i]]]], dtype = np.float32))
loss = model(x, t)
loss.backward()
optimizer.update()
중간 결과를 로그에 남기기
에포크와 loss.
print ('epoch : ', epoch, 'loss : ', loss.data)
결과
좋은 느낌.
이상.
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
import matplotlib.pyplot as plt
import chainer
from chainer import Function, gradient_check, Variable, optimizers, serializers, utils
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L
교육 데이터 세트 반복
-3.0 ~ +3.0의 100점
sin이 교사 데이터
dataset, iterator는 사용하지 않습니다.
X = np.linspace(-3.0, 3.0, num = 100, dtype = np.float32)
T = np.sin(X)
미니 배치에 대한 전처리
에포크는 300
미니 배치는 100
n_epoch = 300
n_batch = 100
신경망의 Forward/backward 계산
회귀이므로 활성화 함수는 tanh
loss는 mean_squared
class MLP(Chain):
def __init__(self):
super(MLP, self).__init__(l1 = L.Linear(1, 20), l2 = L.Linear(20, 1), )
def __call__(self, x):
h = F.tanh(self.l1(x))
out = self.l2(h)
return out
class M_fit(Chain):
def __init__(self, predictor):
super(M_fit, self).__init__(predictor = predictor)
def __call__(self, x, t):
y = self.predictor(x)
loss = F.mean_squared_error(y, t) * 0.5
return loss
def predict(self, x):
y = self.predictor(x)
return y
매개변수 업데이트
옵티마이저는 Adam
optimizer = optimizers.Adam()
optimizer.setup(model)
평가 데이터 세트에서 현재 파라미터 평가
Variable에 데이터를 흘려 넣는다.
for epoch in range(n_epoch):
indexes = np.random.permutation(np.size(X))
for i in range(n_batch):
model.zerograds()
x = Variable(np.array([[X[indexes[i]]]], dtype = np.float32))
t = Variable(np.array([[T[indexes[i]]]], dtype = np.float32))
loss = model(x, t)
loss.backward()
optimizer.update()
중간 결과를 로그에 남기기
에포크와 loss.
print ('epoch : ', epoch, 'loss : ', loss.data)
결과
좋은 느낌.
이상.
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
X = np.linspace(-3.0, 3.0, num = 100, dtype = np.float32)
T = np.sin(X)
에포크는 300
미니 배치는 100
n_epoch = 300
n_batch = 100
신경망의 Forward/backward 계산
회귀이므로 활성화 함수는 tanh
loss는 mean_squared
class MLP(Chain):
def __init__(self):
super(MLP, self).__init__(l1 = L.Linear(1, 20), l2 = L.Linear(20, 1), )
def __call__(self, x):
h = F.tanh(self.l1(x))
out = self.l2(h)
return out
class M_fit(Chain):
def __init__(self, predictor):
super(M_fit, self).__init__(predictor = predictor)
def __call__(self, x, t):
y = self.predictor(x)
loss = F.mean_squared_error(y, t) * 0.5
return loss
def predict(self, x):
y = self.predictor(x)
return y
매개변수 업데이트
옵티마이저는 Adam
optimizer = optimizers.Adam()
optimizer.setup(model)
평가 데이터 세트에서 현재 파라미터 평가
Variable에 데이터를 흘려 넣는다.
for epoch in range(n_epoch):
indexes = np.random.permutation(np.size(X))
for i in range(n_batch):
model.zerograds()
x = Variable(np.array([[X[indexes[i]]]], dtype = np.float32))
t = Variable(np.array([[T[indexes[i]]]], dtype = np.float32))
loss = model(x, t)
loss.backward()
optimizer.update()
중간 결과를 로그에 남기기
에포크와 loss.
print ('epoch : ', epoch, 'loss : ', loss.data)
결과
좋은 느낌.
이상.
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class MLP(Chain):
def __init__(self):
super(MLP, self).__init__(l1 = L.Linear(1, 20), l2 = L.Linear(20, 1), )
def __call__(self, x):
h = F.tanh(self.l1(x))
out = self.l2(h)
return out
class M_fit(Chain):
def __init__(self, predictor):
super(M_fit, self).__init__(predictor = predictor)
def __call__(self, x, t):
y = self.predictor(x)
loss = F.mean_squared_error(y, t) * 0.5
return loss
def predict(self, x):
y = self.predictor(x)
return y
옵티마이저는 Adam
optimizer = optimizers.Adam()
optimizer.setup(model)
평가 데이터 세트에서 현재 파라미터 평가
Variable에 데이터를 흘려 넣는다.
for epoch in range(n_epoch):
indexes = np.random.permutation(np.size(X))
for i in range(n_batch):
model.zerograds()
x = Variable(np.array([[X[indexes[i]]]], dtype = np.float32))
t = Variable(np.array([[T[indexes[i]]]], dtype = np.float32))
loss = model(x, t)
loss.backward()
optimizer.update()
중간 결과를 로그에 남기기
에포크와 loss.
print ('epoch : ', epoch, 'loss : ', loss.data)
결과
좋은 느낌.
이상.
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
for epoch in range(n_epoch):
indexes = np.random.permutation(np.size(X))
for i in range(n_batch):
model.zerograds()
x = Variable(np.array([[X[indexes[i]]]], dtype = np.float32))
t = Variable(np.array([[T[indexes[i]]]], dtype = np.float32))
loss = model(x, t)
loss.backward()
optimizer.update()
에포크와 loss.
print ('epoch : ', epoch, 'loss : ', loss.data)
결과
좋은 느낌.
이상.
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(chainer의 작법 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohisama@github/items/1d7e2647fcb439eddd27텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)