PyTorch Flatten не поддерживает размер партии - PullRequest
1 голос
/ 07 февраля 2020

В Keras, использование слоя Flatten() сохраняет размер пакета. Например, если входная форма для Flatten равна (32, 100, 100), в Keras вывод Flatten равен (32, 10000), но в PyTorch это 320000. Почему это так?

Ответы [ 2 ]

3 голосов
/ 07 февраля 2020

Как уже указывал OP в своем ответе, тензорные операции по умолчанию не учитывают размерность партии. Вы можете использовать torch.flatten() или Tensor.flatten() с start_dim=1, чтобы начать операцию выравнивания после размера партии.

В качестве альтернативы, начиная с PyTorch 1.2.0, вы можете определите слой nn.Flatten() в вашей модели, который по умолчанию равен start_dim=1.

2 голосов
/ 07 февраля 2020

Да, как уже упоминалось в этой теме , такие операции PyTorch, как выравнивание, просмотр, изменение формы.

В целом, при использовании таких модулей, как Conv2d, вам не нужно беспокоиться о размере партии. PyTorch позаботится об этом. Но при работе непосредственно с тензорами необходимо позаботиться о размере партии.

В Керасе Flatten() - это слой. Но в PyTorch flatten() - это операция над тензором. Следовательно, размер партии необходимо обрабатывать вручную.

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