2016-05-15 2 views
0

Я создал простую двухслойную сеть, один скрытый слой. Я сбрасываю весы из среднего слоя, чтобы визуализировать то, что изучают скрытые нейроны. Я используюПутаница с весами, сбрасывающими из нервной сети в керах

weights = model.layers[0].get_weights() 

Когда я смотрю на структуру весов я получаю:

Так len(weights) = 2, len(weights[0]) = 500, len(weights[1]) = 100.

Я хочу создать массив m размера (500,100), так что m.shape = (500,100). Я пробовал numpy.reshape(weights, 500, 100), zip(weights[0], weights[1]), затем, случайно, я написал numpy.array(weights[0]), и это вернулось с формой (500,100).

Может кто-нибудь объяснить, почему?

+0

У меня есть понимание, для проверки, пожалуйста, дайте мне знать, что делает 'LEN (веса [0] [0 ]) 'return? – PseudoAj

+0

Это значение 100. – user

ответ

1

Тензоры Keras работают по-разному, они представляют собой n-мерные списки. В качестве иллюстрации рассмотрим понятие списка:

>>> list=[[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]],[1,2,3]] 

Здесь первый элемент в списке содержит элементы п длины и второй список может быть также элементы п длины. Когда вы делаете:

>>> len(list) 

Выход:

2(which is 2 in your case) 

Кроме того,

>>> len(list[0]) 

5(which is 500 in your case) 

>>> len(list[1]) 

3(which is 100 in your case) 

Но при попытке преобразовать в массив:

>>> np.array(list[0]).shape 

Ответ:

(5, 3) (which is 500,100 in your case) 

Это потому, что у вас есть элемент списка n-длины внутри вашего списка [0] (что является весом [0] в вашем случае). Поэтому, когда я просил вас вернуться

len(weights[0][0]) 

вернулся:

100 

, потому что он содержит 100 элементов длины в этом списке и 500 таких элементов в нем. Теперь, если вам интересно, что делает каждые 100 значения означают, таким образом они corressponding веса соединений, т.е.

weights[0][0] = weights between first input to all 100 hidden neurons 
+0

Спасибо. Мой список происходит от сброса весов нейронной сети с использованием keras list = model.layers [0] .get_weights(). – user

+0

Так вы демпинг веса из вашего слоя ввода? Это сверточная нейронная сеть или простое обратное распространение? Что такое архитектура нейронной сети? Также, пожалуйста, отредактируйте вопрос, потому что это совершенно другой вопрос. – PseudoAj

+0

Я не думал, что это связано с керасом, но, возможно, это так. Я редактировал свой вопрос. – user

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