Pytorch中.new()的作用
【摘要】 目录
一、作用
二、使用方法
三、具体代码
四、实际应用(添加噪声)
一、作用
创建一个新的Tensor,该Tensor的type和device都和原有Tensor一致,且无内容。
二、使用方法
如果随机定义一个大小的Tensor,则新的Tensor有两种创建方法,如下:
inputs = torch.randn(m, n) new_inputs = i...
目录
一、作用
创建一个新的Tensor,该Tensor的type和device都和原有Tensor一致,且无内容。
二、使用方法
如果随机定义一个大小的Tensor,则新的Tensor有两种创建方法,如下:
-
inputs = torch.randn(m, n)
-
-
new_inputs = inputs.new()
-
new_inputs = torch.Tensor.new(inputs)
三、具体代码
-
import torch
-
-
rectangle_height = 1
-
rectangle_width = 4
-
inputs = torch.randn(rectangle_height, rectangle_width)
-
for i in range(rectangle_height):
-
for j in range(rectangle_width):
-
inputs[i][j] = (i + 1) * (j + 1)
-
print("inputs:", inputs)
-
new_inputs = inputs.new()
-
print("new_inputs:", new_inputs)
-
# Constructs a new tensor of the same data type as self tensor.
-
print(new_inputs.type(), inputs.type())
-
print('')
-
-
inputs = inputs.squeeze(dim=0)
-
print("inputs:", inputs)
-
# new_inputs = inputs.new()
-
new_inputs = torch.Tensor.new(inputs)
-
print("new_inputs:", new_inputs)
-
# Constructs a new tensor of the same data type as self tensor.
-
print(new_inputs.type(), inputs.type())
-
if torch.cuda.is_available():
-
device = torch.device("cuda")
-
inputs, new_inputs = inputs.to(device), new_inputs.to(device)
-
print(inputs.device, new_inputs.device)
结果如下:
可以看到不论inputs是多少维的,新建的new_inputs的type和device都与inputs保持一致
-
inputs: tensor([[1., 2., 3., 4.]])
-
new_inputs: tensor([])
-
torch.FloatTensor torch.FloatTensor
-
-
inputs: tensor([1., 2., 3., 4.])
-
new_inputs: tensor([])
-
torch.FloatTensor torch.FloatTensor
-
cuda:0 cuda:0
四、实际应用(添加噪声)
可以对Tensor添加噪声,添加如下代码即可实现:
-
noise = inputs.data.new(inputs.size()).normal_(0,0.01)
-
print(noise)
结果如下:
tensor([ 0.0062, 0.0137, -0.0209, 0.0072], device='cuda:0')
文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。
原文链接:nickhuang1996.blog.csdn.net/article/details/100014333
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)