马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在 PyTorch 中,Tensor.new_zeros 是一种用于创建与现有张量外形或装备匹配的新张量的方法。该方法生成一个全为零的张量,且其数据范例、装备等属性与调用它的张量一致,除非另行指定。
new_zeros 方法的语法
- Tensor.new_zeros(size, *, dtype=None, device=None, requires_grad=False)
复制代码 参数说明
- size (tuple)
指定新张量的外形。例如 (2, 3) 表示创建一个外形为 2x3 的张量。
- dtype (torch.dtype, 可选)
指定新张量的数据范例。如果未指定,将与原张量的数据范例一致。
- device (torch.device, 可选)
指定新张量所在的装备(如 CPU 或 GPU)。如果未指定,将与原张量所在的装备一致。
- requires_grad (bool, 可选)
指定新张量是否需要计算梯度(默以为 False)。
new_zeros 的特性
- 新张量与原张量具有相同的装备和默认数据范例(除非显式更改)。
- 新张量的内容为全零。
利用示例
1. 创建与现有张量外形匹配的零张量
- import torch
- x = torch.ones(2, 3, device='cuda') # 创建一个形状为 (2, 3) 的张量
- zeros = x.new_zeros((2, 3))
- # 创建一个全零张量,与 x 具有相同形状和设备
- print(zeros)
- # 输出(在 GPU 上):
- # tensor([[0., 0., 0.],
- # [0., 0., 0.]], device='cuda:0')
复制代码 2. 创建具有不同外形的零张量
- x = torch.ones(4, 5)
- zeros = x.new_zeros((2, 3))
- # 创建一个形状为 (2, 3) 的零张量
- print(zeros)
- # 输出:
- # tensor([[0., 0., 0.],
- # [0., 0., 0.]])
复制代码 3. 指定命据范例
- x = torch.ones(3, 3, dtype=torch.float32)
- zeros = x.new_zeros((2, 2), dtype=torch.int32) # 显式指定数据类型
- print(zeros)
- # 输出:
- # tensor([[0, 0],
- # [0, 0]], dtype=torch.int32)
复制代码 4. 指定装备
- x = torch.ones(2, 2, device='cuda')
- zeros = x.new_zeros((3, 3), device='cpu') # 在 CPU 上创建新张量
- print(zeros)
- # 输出:
- # tensor([[0., 0., 0.],
- # [0., 0., 0.],
- # [0., 0., 0.]])
复制代码 与其他创建零张量的方法的对比
- zeros = torch.zeros((2, 3))
复制代码
- zeros = x.new_zeros((2, 3))
复制代码
常见应用场景
- 快速创建与输入张量匹配的零张量 在深度学习中,可能需要创建与现有张量外形和装备匹配的零张量。例如,用于初始化中心结果或辅助计算。
- 动态操纵 当输入张量的外形、装备不固定时,可以利用 new_zeros 动态生成匹配的零张量,无需手动指定装备或数据范例。
总结
Tensor.new_zeros 是一个高效、方便的方法,恰当在动态模子或装备敏感的代码中利用。它制止了显式管理装备和数据范例的贫苦,有助于提高代码的简便性和可维护性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |