pytorch张量的new_zeros方法介绍

在 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.]])

与其他创建零张量的方法的对比

  1. torch.zeros

    zeros = torch.zeros((2, 3))

    • 独立于已有张量。
    • 需要显式指定数据类型和设备。
  • Tensor.new_zeros

    zeros = x.new_zeros((2, 3))

  • 与现有张量 x 共享设备和默认数据类型。


常见应用场景

  1. 快速创建与输入张量匹配的零张量 在深度学习中,可能需要创建与现有张量形状和设备匹配的零张量。例如,用于初始化中间结果或辅助计算。

  2. 动态操作 当输入张量的形状、设备不固定时,可以使用 new_zeros 动态生成匹配的零张量,无需手动指定设备或数据类型。


总结

Tensor.new_zeros 是一个高效、方便的方法,适合在动态模型或设备敏感的代码中使用。它避免了显式管理设备和数据类型的麻烦,有助于提高代码的简洁性和可维护性。

相关推荐
chatexcel2 分钟前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
All The Way North-4 分钟前
彻底掌握 RNN(实战):PyTorch API 详解、多层RNN、参数解析与输入机制
pytorch·rnn·深度学习·循环神经网络·参数详解·api详解
Li emily13 分钟前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
bylander17 分钟前
【AI学习】TM Forum《Autonomous Networks Implementation Guide》快速理解
人工智能·学习·智能体·自动驾驶网络
m0_5613596720 分钟前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Ulyanov26 分钟前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
Techblog of HaoWANG37 分钟前
目标检测与跟踪 (8)- 机器人视觉窄带线激光缝隙检测系统开发
人工智能·opencv·目标检测·机器人·视觉检测·控制
laplace012343 分钟前
Claude Skills 笔记整理
人工智能·笔记·agent·rag·skills
2501_941418551 小时前
【计算机视觉】基于YOLO11-P6的保龄球检测与识别系统
人工智能·计算机视觉
码农三叔1 小时前
(8-3)传感器系统与信息获取:多传感器同步与传输
人工智能·机器人·人形机器人