Chainer를 이용한 간단한 신경망 구현 ~ 최적화 알고리즘 설정 ~
이번에는
1. 데이터 준비
2. 모델 설명
3. 최적화 알고리즘 설정
4. 학습
5. 결과 출력
중
3. 최적화 알고리즘 설정
에 대해 씁니다.
또한 그대로
4. 학습에 대해서도 써 버립니다.
최적의 파라미터 계산
마지막으로 작성한 Iris 모델은 다음 코드였습니다.
class IrisChain(Chain):
def __init__():
super(IrisChain, self).__init__(
l1 = L.Linear(4, 6),
l2 = L.Linear(6, 3),
)
def __call__(self, x, y):
return F.mean_squared_error(self.fwd(x), y)
def fwd(self, x):
h1 = F.sigmoid(self.l1(x))
h2 = self.l2(h1)
return h2
하고있는 일의 흐름으로,
1. 생성자에서 선형 정의
2. fwd에서 노드에서 노드로 발화할지 여부의 판정
3. call에서 출력과 교사 데이터와의 오차
입력 레이어에서 중간 레이어로 변환
v = w_1x + b_1 ...(1)
중간층에서 출력층으로 변환
y = w_2v + b_2 ...(2)
라고 표현할 수 있습니다만, 최종적으로 요구하고 싶은 것은 이 파라미터, w와 b입니다.
이번에는 여기에서도 다룬 확률적 구배 강하법(SGD)의 최적화 알고리즘을 사용합니다.
그리고 학습입니다.
학습의 반복 횟수는 이번은 10000회로 합니다.
>>> model = IrisChain()
>>> optimizer = optimizers.SGD()
>>> optimizer.setup(model)
>>> for i range(10000):
... x = Variable(xtrain)
... y = Variable(ytrain)
... model = zerograds()
... loss = model(x, y)
... loss.backward()
... optimizer.update()
아래 4행
model = zerograds()
loss = model(x, y)
loss.backward()
optimizer.update()
는 여기 오차 전파의 모습입니다. 거의 약속의 패턴입니다.
이제 적절한 매개 변수 w와 b를 찾은 다음 분류기를 만들 수 있습니다.
그럼 다음에이 분류기를 사용해 보겠습니다.
참고
야마시타 타카요시
일러스트에서 알 수있는 딥 러닝 코단샤
신나 히로유키
Chainer에 의한 실천 심층 학습~복잡한 NN의 실장 방법~ 오옴사
Reference
이 문제에 관하여(Chainer를 이용한 간단한 신경망 구현 ~ 최적화 알고리즘 설정 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hatt0519/items/0952ed5b24a77aed7fe6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class IrisChain(Chain):
def __init__():
super(IrisChain, self).__init__(
l1 = L.Linear(4, 6),
l2 = L.Linear(6, 3),
)
def __call__(self, x, y):
return F.mean_squared_error(self.fwd(x), y)
def fwd(self, x):
h1 = F.sigmoid(self.l1(x))
h2 = self.l2(h1)
return h2
v = w_1x + b_1 ...(1)
y = w_2v + b_2 ...(2)
>>> model = IrisChain()
>>> optimizer = optimizers.SGD()
>>> optimizer.setup(model)
>>> for i range(10000):
... x = Variable(xtrain)
... y = Variable(ytrain)
... model = zerograds()
... loss = model(x, y)
... loss.backward()
... optimizer.update()
model = zerograds()
loss = model(x, y)
loss.backward()
optimizer.update()
야마시타 타카요시
일러스트에서 알 수있는 딥 러닝 코단샤
신나 히로유키
Chainer에 의한 실천 심층 학습~복잡한 NN의 실장 방법~ 오옴사
Reference
이 문제에 관하여(Chainer를 이용한 간단한 신경망 구현 ~ 최적화 알고리즘 설정 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hatt0519/items/0952ed5b24a77aed7fe6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)