Я пытаюсь использовать пакет цепочки для большого проекта, над которым я работаю. Я прочитал учебное пособие на своем веб-сайте, в котором приведен пример применения его к набору данных MNIST, но он не кажется легко масштабируемым для других примеров, и в противном случае просто недостаточно документации.Использование пакета глубоких нейронных сетей «Цепь» для обучения простого набора данных
Их пример кода выглядит следующим образом:
class MLP(Chain):
def __init__(self, n_units, n_out):
super(MLP, self).__init__(
# the size of the inputs to each layer will be inferred
l1=L.Linear(None, n_units), # n_in -> n_units
l2=L.Linear(None, n_units), # n_units -> n_units
l3=L.Linear(None, n_out), # n_units -> n_out
)
def __call__(self, x):
h1 = F.relu(self.l1(x))
h2 = F.relu(self.l2(h1))
y = self.l3(h2)
return y
train, test = datasets.get_mnist()
train_iter = iterators.SerialIterator(train, batch_size=5, shuffle=True)
test_iter = iterators.SerialIterator(test, batch_size=2, repeat=False, shuffle=False)
model = L.Classifier(MLP(100, 10)) # the input size, 784, is inferred
optimizer = optimizers.SGD()
optimizer.setup(model)
updater = training.StandardUpdater(train_iter, optimizer)
trainer = training.Trainer(updater, (4, 'epoch'), out='result')
trainer.extend(extensions.Evaluator(test_iter, model))
trainer.extend(extensions.LogReport())
trainer.extend(extensions.PrintReport(['epoch', 'main/accuracy', 'validation/main/accuracy']))
trainer.extend(extensions.ProgressBar())
trainer.run()
Может кто-то мне точку в направлении, как просто поместить прямую линию на несколько точек данных в 2D? Если я могу понять простую форму, такую, как это, я должен иметь возможность масштабироваться соответствующим образом.
Спасибо за помощь!
Есть функции затрат, основанный на Наименьший евклидово расстояние – Natecat
Я понимаю, как это сделать математически, мой вопрос заключается в большей степени сосредоточены на том, как это сделать конкретно с пакетом Chainer. –