torch.Tensor.expand
- tensor.expand(*sizes) → Tensor 或者更自然的: 张量.expand(*sizes) → 张量 两种都可以,但为了与原文更一致且符合编程习惯,推荐第一种。
-
返回一个新的视图,将
self
张量的单例维度扩展为更大的尺寸。将 -1 作为维度的值传递表示保持该维度的大小不变。
张量还可以扩展到更高的维度,新的维度将被添加到前面。需要注意的是,新维度的大小不能设置为-1。
扩展张量不会分配新的内存,而只是在现有张量的基础上创建一个新的视图,在这个视图中,将大小为1的维度展开成更大的尺寸,方法是将
stride
设置为0。任何大小为1的维度都可以被展开到任意值而不分配新的内存。- 参数
-
*sizes (torch.Size 或 int...) – 指定所需的扩展尺寸
警告
一个展开的张量的多个元素可能会指向同一块内存位置。因此,原地操作(尤其是向量化操作)可能导致错误行为。如果你想对张量进行写入操作,请先将其克隆。
示例:
>>> x = torch.tensor([[1], [2], [3]]) >>> x.size() torch.Size([3, 1]) >>> x.expand(3, 4) tensor([[ 1, 1, 1, 1], [ 2, 2, 2, 2], [ 3, 3, 3, 3]]) >>> x.expand(-1, 4) # -1 means not changing the size of that dimension tensor([[ 1, 1, 1, 1], [ 2, 2, 2, 2], [ 3, 3, 3, 3]])