python numpy: пример использования ascontiguousarray?

#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