Почему 0-й слой означает, что для redu_mean заданы неправильные средние значения? - PullRequest
0 голосов
/ 10 января 2020

У меня здесь массив 3-го слоя

t = tf.constant([[[1., 1., 1.], [2., 2., 2.]], [[3., 3., 3.], [4., 4., 4.]]])
tf.reduce_mean(t,0)

Я думал, что среднее значение 0-го слоя будет 1,5 и 3,5. Тем не менее, это дает мне 2 и 3. Может ли кто-нибудь помочь объяснить, что здесь происходит?

<tf.Tensor: id=8966, shape=(2, 3), dtype=float32, numpy=
array([[2., 2., 2.],
       [3., 3., 3.]], dtype=float32)>

Кроме того, я не понимаю, почему

t = tf.constant([[[1., 1., 1.], [2., 2., 2.]], [[3., 3., 3.], [4., 4., 4.]]])
tf.reduce_mean(t,2)

не выдает ответ как

[[[1.],[2.]],
 [[3.],[4.]]]

? Он выдает ответ как

<tf.Tensor: id=9014, shape=(2, 2), dtype=float32, numpy=
array([[1., 2.],
       [3., 4.]], dtype=float32)>

Откуда взялся 2-й слой [] go?

Какую часть слоя я не правильно понимаю?

1 Ответ

0 голосов
/ 11 января 2020

Здесь показано, как tf.reduce_mean работает на axis=0.

enter image description here

У вас есть массив (2,2,3). tf.reduce_mean(t, 0) создает массив (2,3) путем сжатия массива (взяв среднее) на axis=0, как показано. То же самое вы можете визуализировать для любого другого измерения.

Всякий раз, когда вы выполняете операцию reduction на оси, эта ось исчезает (фактически становится 1). Если вы хотите сохранить это измерение, просто установите tf.reduce_mean(t, 0, keepdims=True).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...