Различное поведение с torch.mean (data, 0) и torch.mean (data) для вектора - PullRequest
0 голосов
/ 28 июня 2018

Я был удивлен, обнаружив другое поведение с torch.mean (data, 0) и torch.mean (data), где «data» - это 1D-тензор (вектор, а не матрица или что-то еще):

from torchvision import datasets
import torch

path = './MNIST_data'

data = datasets.MNIST(path, train=True, download=True).train_data.view(-1).float()

print(torch.mean(data))
print(torch.mean(data, 0))

Результаты после выполнения:

tensor(33.3184)
tensor(33.4961)

Может ли кто-нибудь предположить, что происходит? Я предположил, что результаты должны быть одинаковыми.

1 Ответ

0 голосов
/ 28 июня 2018

Пример должен помочь вам устранить ваши сомнения.

Допустим, у нас есть data = torch.Tensor([[1,2,3,4],[1,2,3,4]])

Теперь, когда вы выполните torch.mean(data), он суммирует все элементы в тензоре данных и разделит его на количество элементов в этом тензоре, давая вам результат 2.5

Что касается вашей операции torch.mean(data, 0) Это выполнит среднее по горизонтальному направлению, что означает, что он возьмет первый элемент строки 1, равный 1, и первый элемент строки 2, равный 2, суммирует их и делить на 2. Это помогает визуализировать массив данных таким образом

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

Окончательный результат будет тензором [1, 2, 3, 4], если вы знаете, как мы получили этот тензор, вы поняли разницу.

Надеюсь, что это прояснит, Дайте мне знать, если у вас есть вопросы

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