#python #arrays #numpy
Вопрос:
Я знаю, что ascontiguousarray
это возвращает непрерывный массив в памяти, но может ли кто-нибудь сказать мне, когда это действительно будет необходимо? т. Е. результат неверен без этой функции? или, может быть, это сделает следующие операции более эффективными?
Я написал функцию свертки, в которой я as_strided
изменял ее форму и шаги, затем einsum
умножал на ядро, наконец moveaxis
, так что конечная форма (N,C,H,W), как в pytorch. Итак, в этом случае, как вы думаете, я должен использовать ascontiguousarray
перед выводом? Спасибо!
Комментарии:
1. Некоторые специальные скомпилированные функции предполагают/требуют наличия смежного буфера данных. При необходимости они выдадут ошибку. Некоторые
views
из них не являются смежными. Но обычно вам не нужно беспокоиться об этом.2. В этом выступлении на SciPy Japan спикер немного рассказывает о непрерывных массивах и их производительности: youtube.com/watch?v=cYugp9IN1-Qamp;t=1503s