tf.keras.layers.Dense - количество параметров? - PullRequest
0 голосов
/ 09 марта 2020

Я использую функциональный API-интерфейс keras для создания хорошего net. Однако я не понимаю, как работает пространственная связь в tf.keras.layers.Dense.

Если сгладить объем 7x7x1024, я получу 50 176 параметров. Я ожидаю, что общее число параметров между двумя слоями будет

50,176 * 4096 + 4096 = 205,524,992

И это так.

И, что удивительно, когда я удаляю слой Flatten (), я не получаю никаких ошибок несовместимости размеров. Форма вывода 7x7x4096, а число параметров:

1024 * 4096 + 4096 = 4,198,400

Если это правильно, почему tf.keras.layers. Плотные имеют только плотные связи между последними размерами слоев и почему выходной объем 7x7x4096?

(last layer is 7 x 7 x 1024 volume) 
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(4096)(x)

1 Ответ

0 голосов
/ 09 марта 2020

Когда вы передаете тензор с dim> 2 Dense, создайте соединение с последним измерением как поведение по умолчанию [1] (строка 889, input_dim = input_shape [-1]), поэтому вы не получите никакой ошибки. И в результате вы также получите количество параметров, которые вы уже рассчитали. Поэтому, если вы используете 3D-входы, вам нужно сгладить его, прежде чем передавать его на плотный слой.

[1] https://github.com/keras-team/keras/blob/master/keras/layers/core.py#L796

...