错误原因:

我们使用view()函数的时候,稍有不慎会碰到这样的错误:

RuntimeError: invalid argument 2: view size is not compatible with input tensor's....

这是因为tensor经过转置后数据的内存地址不连续导致的。

解决方案:

在view()函数前加contiguous(),使其变为连续就可以了,如下所示:

out = out.contiguous().view(2, 3)

牢记:

目前pytorch只要是transpose()和permute()这两个函数用过后,tensor都会变得不再连续,就不可以使用view()。

我们只需要记住了,使用view()之前,只要使用了transpose()和permute()这两个函数一定要contiguous()。

调用contiguous()时,会强制拷贝一份tensor,让它的布局和从头创建的一模一样。