You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建固定形状与数据类型的PyTorch高维张量?

解决PyTorch创建指定形状张量的问题

首先明确:torch.tensor()是基于输入数据的结构生成张量,不是直接指定形状的函数。你传入(1, 345)这个二元组,它会生成包含两个元素的一维张量,所以形状是[2],这是符合函数逻辑的行为。

下面是正确创建形状为torch.Size([1, 345])张量的几种方法:

1. 创建初始化的指定形状张量

如果需要创建全0、全1或随机值的张量,用torch.zeros()、torch.ones()、torch.randn()这类初始化函数,它们支持直接传入形状参数:

import torch
# 创建全0的[1,345] int64张量
pt1 = torch.zeros((1, 345), dtype=torch.int64)
# 创建全1的[1,345] int64张量
pt2 = torch.ones((1, 345), dtype=torch.int64)
# 创建随机正态分布转换后的[1,345] int64张量
pt3 = torch.randn((1, 345)).to(torch.int64)

2. 将现有数据转换为指定形状

如果你有长度为345的一维数据,想把它变成[1, 345]的二维张量,可以用reshape()或unsqueeze()方法调整维度:

# 假设你有345个元素的数据源
data = list(range(345))
# 先创建一维张量,再reshape为目标形状
pt1 = torch.tensor(data, dtype=torch.int64).reshape(1, 345)
# 或者用unsqueeze在第0维新增一个维度
pt2 = torch.tensor(data, dtype=torch.int64).unsqueeze(0)

纠正你之前的错误写法

  • torch.tensor(1, 345, dtype=torch.int64):报错是因为torch.tensor()仅接受一个位置参数(数据),你传入了两个位置参数1和345,不符合函数参数定义。
  • torch.tensor((1, 345), dtype=torch.int64):和最初写法逻辑一致,输入是二元组,生成形状[2]的一维张量,并非目标二维形状。
  • torch.tensor(shape=(1, 345), dtype=torch.int64):torch.tensor()没有shape这个参数,该参数仅适用于torch.zeros()这类初始化函数。

内容的提问来源于stack exchange,提问作者4daJKong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:12:13