Не удалось понять вывод keras dense layer

#python #tensorflow #keras

#python #tensorflow #keras

Вопрос:

Я тестирую keras layer. Я создал простой плотный слой с формой ввода (10,2) и всеми значениями, равными 1. И я использую zero_initial_state для начальных весов слоя. Однако я не смог понять выходные данные dense layer, поскольку он может вычислять конечные выходные данные с помощью sth. неизвестно. Мой код:

 batch_size = 10
time_steps = 30
label_num = 2.
units = 5

batch_data = tf.ones((batch_size, label_num))

dense_layer = Dense(units)
output = dense_layer(batch_data)
with tf.Session() as sess:
  init = tf.global_variables_initializer()
  sess.run(init)
  print('__________________output_____________________')
  print(sess.run(output))
  

Я печатаю начальное ядро и смещаю:

 ____________________self.kernel____________________

[[-0.6072792   0.87520194 -0.5916964  -0.28233814  0.37042332]
 [ 0.24503589 -0.8950937  -0.7122175   0.67322683  0.9035703 ]]

____________________self.bias____________________

[0. 0. 0. 0. 0.]
  

Я думаю, что конечный результат должен быть:

 [[-0.3622433  -0.01989174 -1.3039138   0.3908887   1.2739936 ]
 [-0.3622433  -0.01989174 -1.3039138   0.3908887   1.2739936 ]
 [-0.3622433  -0.01989174 -1.3039138   0.3908887   1.2739936 ]
 [-0.3622433  -0.01989174 -1.3039138   0.3908887   1.2739936 ]
 ....
  

Однако конечный результат:

 [[-0.25280607  1.0728977  -0.6096982   1.1957564   0.82103825]
 [-0.25280607  1.0728977  -0.6096982   1.1957564   0.82103825]
 [-0.25280607  1.0728977  -0.6096982   1.1957564   0.82103825]
  

Активация отсутствует. Почему вывод keras dense layer такой?

Комментарии:

1. Вы не понимаете форму вывода или числовой результат output ? Вы знаете, что веса каждый раз инициализируются случайным образом, верно?

2. Как указал @Vlad, Dense использует kernel_initializer='glorot_uniform' по умолчанию. И вы сказали, что используете zero_initial_state для начальных весов слоя

3. Я обнаружил, что допустил большую ошибку. Когда я печатаю веса, я повторно инициализирую все переменные. Таким образом, вывод — это результат, основанный на последних случайных начальных весах, который отличается от первого, который я напечатал!