torch.ones_like(),expand_as(),expend()等torch.repeat
https://blog.csdn.net/Arthur_Holmes/article/details/104267662
https://blog.csdn.net/weixin_39568781/article/details/110066146
https://blog.csdn.net/qq_40263477/article/details/107054675
https://blog.csdn.net/whitesilence/article/details/119575617
pytorch中的expand()和expand_as()函数
1.expand()函数:
(1)函数功能:
expand()函数的功能是用来扩展张量中某维数据的尺寸,它返回输入张量在某维扩展为更大尺寸后的张量。
扩展张量不会分配新的内存,只是在存在的张量上创建一个新的视图(关于张量的视图可以参考博文:由浅入深地分析张量),而且原始tensor和处理后的tensor是不共享内存的。
expand()函数括号中的输入参数为指定经过维度尺寸扩展后的张量的size。
(2)应用举例:
RuntimeError: Can’t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
待转换类型的PyTorch Tensor变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以在变量转换之前添加detach()调用。
expand的含义:为1的维度可以变大维度或者维度数增多
tensor_1.expand(size):把tensor_1扩展成size的形状
tensor_1.expand_as(tensor_2) :把tensor_1扩展成和tensor_2一样的形状
TORCH.ONES_LIKE
torch.
ones_like
(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) → Tensor-
Returns a tensor filled with the scalar value 1, with the same size as
input
.torch.ones_like(input)
is equivalent totorch.ones(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)
.