2015-01-16 1 views
2

я только начал изучать «Deepnet» пакет: http://cran.r-project.org/web/packages/deepnet/index.htmlR deepnet package: как добавить больше скрытых слоев в мою нейронную сеть?

Речь идет о «глубоком» уклоне, поэтому об использовании многослойных нейронных сетей. Я начал использовать функции train(), доступные в пакете, , но я действительно не могу понять, как добавить более скрытые слои в нейронные сети . Стандартная настройка включает в себя 2 скрытых слоя, но я хотел бы добавить больше, например 5. Есть ли у вас некоторые идеи?

Я использую функцию sae.dnn.train(), но я не могу понять, какой параметр контролирует количество скрытых слоев. Вот пример кода:

Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2) 
y <- c(rep(1, 50), rep(0, 50)) 
dnn <- sae.dnn.train(x, y, hidden = c(5, 5)) 
## predict by dnn 
test_Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
test_Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
test_x <- matrix(c(test_Var1, test_Var2), nrow = 100, ncol = 2) 
nn.test(dnn, test_x, y) 

Какой параметр определяет количество скрытых слоев в нейронной сети? Как добавить еще скрытые слои?

+0

btw, 'h2o' действительно быстр с высоким удобством использования, и вы можете попробовать. – Patric

ответ

7

Хотя я не знаком с пакетом deepnet, похоже, что он структурирован так же, как и другие пакеты нейронной сети. После просмотра документации (?sae.dnn.train) вы увидите:

hidden: vector for number of units of hidden layers.Default is c(10). 

Теперь это не ясное описание, но я считаю, что это должно быть таким же, как neuralnet функции в neuralnet пакете. ?neural::neuralnet

hidden: a vector of integers specifying the number of hidden neurons 
      (vertices) in each layer. 

Это намного более ясно, где вы можете понять, что вы создаете вектор, указывающий число нейронов (узлов, вершин и т.д.) в каждом слое .

Итак, ваш пример с hidden = c(5, 5) предназначен для двух слоев с 5 нейронами в каждом слое. Так что если вам нужно 5 скрытых слоев с 5 нейронами в каждом, вы просто положите hidden = c(5, 5, 5, 5, 5).

+0

Спасибо @cdeterman. Я изменил свой пример и да, который, кажется, является параметром для количества слоев, но он, похоже, не работает с более чем тремя слоями. Это '' dnn <- sae.dnn.train (x, y, hidden = c (5, 5, 5) "работает, но' 'dnn <- sae.dnn.train (x, y, hidden = c (5, 5, 5, 5)) '' дает ошибку: «Ошибка в sae $ encoder [[i - 1]] $ B [[i - 1]]: индекс за пределами границ». Любая идея о том, как решить эту проблему? –

+1

Это, кажется, ошибка в коде для моделей со многими слоями. Вы можете посмотреть код самостоятельно на странице github [здесь] (https://github.com/cran/deepnet/tree/master/ R), где ошибка возникает в строке 32 файла sae_train.R. Вероятно, лучше всего связаться с поддерживающим пакет. Хотя я не знаю точных различий между пакетами, 'neuralnet :: neuralnet' функция работает с более чем 3-мя слоями, если вы также хотите исследовать этот проспект. – cdeterman

+0

Спасибо. Знаете ли вы, что пакет 'neuralnets'' включает в себя обучение« Отбросить »? –