chainer의 작법 그 5

2164 단어 AutoencoderChainer

개요



chainer의 작법, 조사해 보았다.
autoencoder.

가져오기


import numpy as np
from chainer import datasets, iterators
from chainer import optimizers
from chainer import Chain
from chainer import training
from chainer.training import extensions
import chainer.functions as F
import chainer.links as L
import chainer
import matplotlib.pyplot as plt


교육 데이터 세트 반복



datasets get_mnist 사용한다.
    train, test = datasets.get_mnist()
    train = train[0 : 1000]
    train = [i[0] for i in train]


미니 배치에 대한 전처리



datasets의 TupleDataset 사용한다.
    train = datasets.TupleDataset(train, train)
    train_iter = iterators.SerialIterator(train, 100)
    test = test[0 : 25]

신경망의 Forward/backward 계산



Classifier 사용하지만, loss는 mean_squared를 사용한다.
활성화는 relu.
class Autoencoder(Chain):
    def __init__(self):
        super(Autoencoder, self).__init__(encoder = L.Linear(784, 80), decoder = L.Linear(80, 784))
    def __call__(self, x, hidden = False):
        h = F.relu(self.encoder(x))
        if hidden:
            return h
        else:
            return F.relu(self.decoder(h))
    model = L.Classifier(Autoencoder(), lossfun = F.mean_squared_error)
    model.compute_accuracy = False

매개변수 업데이트



optimaizer는 Adam.
    optimizer = optimizers.Adam()
    optimizer.setup(model)
    updater = training.StandardUpdater(train_iter, optimizer, device = -1)
    trainer = training.Trainer(updater, (80, 'epoch'), out = "result")

    trainer.run()

평가 데이터 세트에서 현재 파라미터 평가




중간 결과를 로그에 남기기


    trainer.extend(extensions.LogReport())
    trainer.extend(extensions.PrintReport(['epoch', 'main/loss']))

결과





이상.

좋은 웹페이지 즐겨찾기