我知道它ascontiguousarray会在内存中返回一个连续的数组,但是有人可以告诉我什么时候真的有必要吗?即没有这个功能结果是错误的?或者这可能会使后续操作更加高效?
我写了一个卷积函数,我用来as_strided改变它的形状和步幅,然后einsum与内核相乘,最后是a,moveaxis所以最终的形状是(N,C,H,W),就像pytorch中一样。那么在这种情况下,你认为我应该ascontiguousarray在输出之前使用 an 吗?谢谢!
在 pytorch NLLLoss文档中,ignore_index 的默认值是 -100 而不是通常的None,有什么特殊原因吗?似乎任何负值都是等价的。
顺便说一句,我想忽略索引的原因可能是什么?谢谢!
例如,如果我只想转置此数组的最后两个维度:
a=np.random.randn(2,2,2,2,2),我会写类似:a.transpose((0,1,2,4,3))。如何省略主要尺寸?有哪些简洁有效的方法?谢谢!
编辑,我知道如何简单地交换数组的形状和步幅,但我认为它看起来很混乱:
strides=list(a.strides)
strides[-2], strides[-1]=strides[-1], strides[-2]
a.strides= strides
shape=list(a.shape)
shape[-2], shape[-1]=shape[-1], shape[-2]
a.shape= shape
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种巧妙的方法可以做到这一点。