• 徐洲更
    2021-12-08
    通过查阅文档,torch.Tensor是默认tensor类型的torch.FloatTensor别名, 可以直接从给定数据中创建出FloatTensor的tensor, 而torch.tensor是创建会根据输入的数据类型判断。 也就是说,如果我传入的是int类型,那么torch.Tensor输出的是FloatTensor数据格式,而torch.tensor输出的torch.int32

    作者回复: 👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻

    共 2 条评论
    32
  • vcjmhg
    2021-10-18
    torch.Tensor() 是Tensor类的构造方法,通过构造方法创建Tensor对象的实例;torch.tensor()则是Tensor类内部的一个方法,方法的返回值是Tensor类型

    作者回复: 你好,vcjmhg,感谢你的留言。回答的很赞👍。torch.tensor是函数,调用之后会对参数中的数据做拷贝,生成相应的张量并返回这个张量。

    
    9
  • Geek_86b454
    2021-12-13
    新创建出来的tensor是CPU tensor还是GPU tensor呢

    作者回复: 你好,感谢你的留言。 由创建tensor中的device参数决定是在CPU还是GPU。

    
    3
  • Sam Wang
    2021-10-20
    Squeeze 和unsqueeze我的理解是他们只是减少或增加了1维,但其实并未增加或者减少数据。因为数据数量没变 (多乘1而已,数量不变)

    作者回复: 你好,Geek_60b6fb,感谢你的留言。数据是没有发生变化的,只是维度变化了。 但是你说的多乘1,我没太理解是什么意思。可以留言,或者在微信群里咱们继续交流。^^

    共 3 条评论
    2
  • celerychen
    2022-07-28 来自北京
    x.view(4, 4) 元素个数仍然是16个,和之前的一样,内存怎么就变成不连续的呢,能否解释一下?谢谢老师!

    作者回复: celerychen,你好,感谢你的留言。 view操作只作用在连续内存上,仅仅按照行重新排列下标,不改变数据的内存分布。也就是说,数据本身没有变化,下标发生了变化,如果从下标顺序的角度来看,内存就是不连续的了。

    共 2 条评论
    1
  • 步比天下
    2021-10-19
    老师您好,感觉最后一个例子有些不太理想,有些同学可能会搞不清新的一维是在哪个位置插入的,能不能再换个例子啊

    作者回复: 你好,步比天下。感谢你的留言。这个例子其实还是比较好理解的,unsqueeze函数例子中是在第2维度进行插入的,也就是说,新的维度在第二维,新tensor的shape为2,1,1,3,其中第二个1就是新插入的。

    
    1
  • 站着睡觉的树
    2022-03-28
    老师,请问 获取形状的代码中,a=torch.zeros(2, 3, 5) ,这是一个2行,3列,深度为5的张量吗?我看您的配图,表示的是2列,3行,深度为5的张量。 也就是说,张量的0维,指的是有多少列,张量的1维指的是有多少行,张量的2维指的是有层(深度),我的理解对吗?

    作者回复: 你好,站着睡觉的树,感谢你的留言。 其实,没有行、列、深度的概念的。只不过3维是我们可以用图画描述出来的,如果是4维、5维更高维度的话,那该怎么办呢? a=torch.zeros(2, 3, 5) 只能说张量a的shape的第一个维度是2,第二个维度是3,第三个维度是5

    
    
  • Chloe
    2022-01-26
    请问老师能不能讲讲为什么squeeze 只能增减维度的大小为 1 的维度呢?

    作者回复: squeeze只能减不能增啊。

    
    
  • 马克图布
    2021-11-05
    老师,关于 Tensor 内存不连续的问题,使用 contiguous() 函数也可以解决吧?还是说使用 reshape() 有些什么其他优势呢?

    作者回复: 你好。马克图布,感谢你的留言。 View本身不支持内存不连续的Tensor结构,所以你先用contiguous处理一下是可以的。但是View方法本身共享底层数据内存,返回的Tensor不会使用新的内存。所以如果你想在view中使用contiguous,就有可能会使用新的内存,破坏了代码的连贯与兼容性。

    
    
  • 李雄
    2021-10-23
    这里我们新建了一个维度为[2, 1, 3]的 Tensor,然后在第 2 维度插入一个数据,这样就得到了一个[2,1,1,3]大小的 tensor。 应该是在第2维度上插入一个维度,这样说是不是更准确些。因为x.numel() == y.numel()的返回值是True

    作者回复: 你好,李雄。感谢你的留言,也谢谢你的纠正。👍🏻👍🏻👍🏻👍🏻维度更准确,我修改一下。^^

    共 3 条评论
    