2015-10-14 5 views
1

Я разрабатываю многослойную нейронную сеть для изучения. Но теперь я нахожусь в исправлении, где пользователь должен определить количество скрытых слоев, которые он хочет, и количество нейронов в каждом слое. Мои входы имеют матрицу (x, 8), и мой фактический вывод имеет матрицу (x, 2), где x - количество строк в моих данных образца.Масса в многослойной нейронной сети

Я обычно определяют мои веса, как

Weights1 = 2 * np.random.random((Hidden_layer_len,X[0].shape[0])) - 1 
Weights2 = 2 * np.random.random((T[0].shape[0],Hidden_layer_len)) - 1 
W = [Weights1, Weights2] 

, где Х представляет собой входной сигнал, Т выход из образца технического описания и Hidden_layer_len длина скрытого слоя, предполагая, что существует один скрытый слой между моим входом и выход.

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

Предполагая, что существует n уровней, как я могу создать свои веса для n слоев и числа нейронов в каждом слое?

ответ

3

Я бы рекомендовал использовать модуль Pybrain для легкого создания нейронных сетей. Их документацию можно найти здесь:

http://pybrain.org/docs/tutorial/netmodcon.html

веса будет инициализирована случайным образом в создании сети, как вы пытаетесь сделать, и количество скрытых нейронов и скрытых слоев может быть изменена. Простой 2 скрытый слой нейронной сети с 10 скрытых нейронов на примере слоя:

from pybrain.structure import FeedForwardNetwork 
n = FeedForwardNetwork() 

from pybrain.structure import LinearLayer, SigmoidLayer 
inLayer = LinearLayer(8) 
hiddenLayer = SigmoidLayer(10) 
hiddenLayer2 = SigmoidLayer(10) 
outLayer = LinearLayer(2) 

n.addInputModule(inLayer) 
n.addModule(hiddenLayer) 
n.addModule(hiddenLayer2) 
n.addOutputModule(outLayer) 

from pybrain.structure import FullConnection 
in_to_hidden = FullConnection(inLayer, hiddenLayer1) 
hidden_to_hidden = FullConnection(hiddenLayer1, hiddenLayer2) 
hidden_to_out = FullConnection(hiddenLayer2, outLayer) 

n.addConnection(in_to_hidden) 
n.addConnection(hidden_to_hidden) 
n.addConnection(hidden_to_out) 

n.sortModules() 
+0

wow. Это именно то, что я хотел. Спасибо u :) –

+0

Нет проблем :) Я начал работать над RNN несколько месяцев назад, и найти Пирамина спасло меня много времени. –

3

Если вы чувствуете приключений и нуждаются в вычислительной мощности с помощью GPU. Я бы порекомендовал Keras Deep Learning Library. Я также начал работу с PyBrain, но в итоге я перешел к более обновленным библиотекам, таким как Keras и Theano. Keras очень легко учиться, и он способен воспроизвести некоторое состояние результатов с очень небольшим количеством строк кода. Существует очень активное сообщество Keras, разрабатывающее последние функции, тогда как PyBrain сейчас не находится в активном развитии.

Смежные вопросы