Как создать многомерный результат, перебирая партии массивов - PullRequest
0 голосов
/ 21 января 2019

Я перебираю некоторые входные пакеты и генерирую результаты, которые имеют форму (BatchSize, X, Y).BatchSize не обязательно совпадает с циклом, который я выполняю по партиям.Я хотел бы вернуть один вывод, который является объединенной версией результатов по пакетному измерению.Какой самый элегантный способ сделать это в NumPy?

Я не столько беспокоюсь о производительности , сколько о многомерности накопленного массива результатов.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Ответ @ Скотта правильный. Однако я искал инкрементную версию, которую, я думаю, я нашел:

Определите results = np.empty((0, output_shape)), а затем обновите его в цикле, используя results = np.concatenate((results, some_func(x)))

Я не уверен, как мне следует думать о размере 0 в numpy, но это работает.

0 голосов
/ 21 января 2019

Если у вас достаточно памяти для хранения всех результатов, хорошим решением будет просто предварительно выделить память:

result = np.empty(OUTPUT_SHAPE)
i=0
while i < input_tensor.shape[0]:
    batch_size = get_batch_size(i)
    result[i:i+batch_size] = deal_with_batch(input_tensor[i:i+batch_size])
    i += batch_size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...