作者回复: 👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻
作者回复: 你好,vcjmhg,感谢你的留言。回答的很赞👍。torch.tensor是函数,调用之后会对参数中的数据做拷贝,生成相应的张量并返回这个张量。
作者回复: 你好,感谢你的留言。 由创建tensor中的device参数决定是在CPU还是GPU。
作者回复: 你好,Geek_60b6fb,感谢你的留言。数据是没有发生变化的,只是维度变化了。 但是你说的多乘1,我没太理解是什么意思。可以留言,或者在微信群里咱们继续交流。^^
作者回复: celerychen,你好,感谢你的留言。 view操作只作用在连续内存上,仅仅按照行重新排列下标,不改变数据的内存分布。也就是说,数据本身没有变化,下标发生了变化,如果从下标顺序的角度来看,内存就是不连续的了。
作者回复: 你好,步比天下。感谢你的留言。这个例子其实还是比较好理解的,unsqueeze函数例子中是在第2维度进行插入的,也就是说,新的维度在第二维,新tensor的shape为2,1,1,3,其中第二个1就是新插入的。
作者回复: 你好,站着睡觉的树,感谢你的留言。 其实,没有行、列、深度的概念的。只不过3维是我们可以用图画描述出来的,如果是4维、5维更高维度的话,那该怎么办呢? a=torch.zeros(2, 3, 5) 只能说张量a的shape的第一个维度是2,第二个维度是3,第三个维度是5
作者回复: squeeze只能减不能增啊。
作者回复: 你好。马克图布,感谢你的留言。 View本身不支持内存不连续的Tensor结构,所以你先用contiguous处理一下是可以的。但是View方法本身共享底层数据内存,返回的Tensor不会使用新的内存。所以如果你想在view中使用contiguous,就有可能会使用新的内存,破坏了代码的连贯与兼容性。
作者回复: 你好,李雄。感谢你的留言,也谢谢你的纠正。👍🏻👍🏻👍🏻👍🏻维度更准确,我修改一下。^^