2015-02-20 5 views
3

Я пытаюсь обучить MNIST набор данных с помощью dbn.dnn.train функцию deepenet пакета. Задача является классической. Я использую следующую командуR Пакет Deepnet: Обучение и тестирование MNIST набор данных

dbn.deepnet <- dbn.dnn.train(train.image.data,train.image.labels,hidden=c(5,5)) 

Проблемы я столкнулся являются:

1) Этикетки должны быть типа вектор фактор. Но когда я вводим метки как фактор, функция дает ошибку, что «y должна быть матрицей или вектором». Итак, я использую метки как числовые. Как продолжить классификационное задание

2) Что это за функция, чтобы сделать прогнозы для dbn.dnn.train. Я использую nn.predict, но в документации упоминается, что ввод должен быть нейронной сетью, обученной функцией nn.train (dbn.dnn.train не упоминается). Выход 0,9986 для всех записей

nn.predict(dbn.deepnet,train.image.data) 
+0

Может быть, вы должны попробовать ** neuralnet ** пакет вместо этого? Пожалуйста, проверьте этот ответ http://stackoverflow.com/questions/21827195/unexpected-output-while-using-neuralnet-in-r Надеюсь, это поможет. –

+0

Спасибо! Но я пытаюсь внедрить глубокое обучение, особенно глубокие сети убеждений, которые не предоставляются пакетом neuralnet. –

+0

Пример обучения MNIST w/'deepnet' можно найти в [здесь] (http://www.parallelr.com/r -with-parallel-computing /) и информацию об ускорении в [здесь] (http://stackoverflow.com/questions/32239487/why-r-deepnet-slow-how-can-i-speed-up/39554401#39554401) , – Patric

ответ

2

Не знаю, если вы все еще работаем над этим, или если вы нашли решение, но: 1/попробуйте это: train.image.labels < - data.matrix (train.image.labels)

2/i использовать nn.predict, даже если нейронная сеть обучается dbn.dnn.train.

1

Как вы знаете, значения входных значений для нейронной сети лучше быть между 0 и 1. В пакете «deepnet», в отличие от функции nn.train, для dbn.dnn.train вам необходимо нормализовать вход самостоятельно. Вот полный код для загрузки, обучения и тестирования.

#loading MNIST 
setwd("path/to/MNIST/") 
mnist <- load.mnist(".") 
# the function to normalize the input values 
normalize <- function(x) { 
    return (x/255) 
} 
# standardization 
train_x_n <- apply(mnist$train$x, c(1,2),FUN = normalize) 
test_x_n <- apply(mnist$test$x, c(1,2),FUN = normalize) 
#training and prediction 
dnn <- dbn.dnn.train(train_x_n, mnist$train$yy, hidden = c(100, 70, 80), numepochs = 3, cd = 3) 
err.dnn <- nn.test(dnn, test_x_n, mnist$test$yy) 
dnn_predict <- nn.predict(dnn, test_x_n) 
# test the outputs 
print(err.dnn) 
print(dnn_predict[1,]) 
print(mnist$test$y[1]) 

Outout:

> err.dnn 
[1] 0.0829 
> dnn_predict[1,] 
[1] 7.549055e-04 1.111647e-03 1.946491e-03 7.417489e-03 3.221340e-04 7.306264e-04 4.088365e-05 9.944441e-01 8.953903e-05 
[10] 9.085863e-03 
> mnist$test$y[1] 
[1] 7 
Смежные вопросы