Ошибка при инициализации большого массива bcolz: «размер dtype в байтах должен соответствовать C int» - PullRequest
0 голосов
/ 25 июня 2019

Я хочу хранить прогнозы CNN в bcolz carray. Маски предсказания являются массивами фигуры (15, 33216, 5056). Команда, которую я использовал раньше для инициации карри, была:

bcolz.carray(np.zeros((0, 15, 33216, 5056), dtype=prediction_array_dtype), mode="w")

Тогда позже я добавляю каждый массив предсказаний к кадру.

Впервые я столкнулся со следующей ошибкой при инициализации каретки таким образом:

"ValueError: недопустимая форма в кортеже фиксированного типа: размер dtype в байтах должен вписываться в C int. "

Я не совсем уверен, что это значит или что я могу с этим поделать.

Я попробовал одну альтернативу:

bcolz.carray(np.zeros((0,), dtype=np.ndarray), mode="w")

Тогда я также могу добавить каждый массив предсказаний к кадру. Все же маски хранятся по-разному. Если бы я получил первый элемент из такой корзины, он бы имел форму (33216, 5056) вместо (15, 33216, 5056). Хотя мой обычный способ сделать это кажется мне более интуитивным, я на самом деле понятия не имею, должен ли я отдавать предпочтение одному над другим (и почему именно моя попытка выше не удалась, а другая удалась).

Подводя итог, мои вопросы явно:

  1. что означает ошибка?
  2. Как мне избежать этой ошибки?
  3. Является ли один из двух упомянутых мною способов инициализации предпочтительнее другого? Почему?
...