Pytorch创建一个tensor

在 PyTorch 中,可以通过多种方式创建张量(Tensor)。以下是一些常见的方法:


1. 从数据直接创建

你可以直接从 Python 的列表或数值创建张量。

import torch

# 从列表创建张量
tensor_from_list = torch.tensor([[1, 2], [3, 4]])
print(tensor_from_list)
# 输出:
# tensor([[1, 2],
#         [3, 4]])

# 指定数据类型
tensor_with_dtype = torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=torch.float32)
print(tensor_with_dtype)
# 输出:
# tensor([[1., 2.],
#         [3., 4.]], dtype=torch.float32)

2. 创建全零张量或全一张量

可以使用 torch.zerostorch.ones 创建指定形状的全零或全一张量。

# 全零张量
zeros_tensor = torch.zeros(3, 4)  # 3 行 4 列
print(zeros_tensor)
# 输出:
# tensor([[0., 0., 0., 0.],
#         [0., 0., 0., 0.],
#         [0., 0., 0., 0.]])

# 全一张量
ones_tensor = torch.ones(2, 3)  # 2 行 3 列
print(ones_tensor)
# 输出:
# tensor([[1., 1., 1.],
#         [1., 1., 1.]])

3. 随机初始化张量

使用 torch.randtorch.randn 创建随机张量。

# 均匀分布随机数
rand_tensor = torch.rand(2, 2)
print(rand_tensor)
# 输出:
# tensor([[0.1234, 0.5678],
#         [0.2345, 0.6789]])

# 标准正态分布随机数
randn_tensor = torch.randn(2, 2)
print(randn_tensor)
# 输出:
# tensor([[-0.3456,  0.6789],
#         [ 1.2345, -0.1234]])

4. 创建特定范围或规则的张量

  • 使用 torch.arange 创建等间距张量。
  • 使用 torch.linspace 创建指定区间内均匀分布的点。
# 等间距数值
arange_tensor = torch.arange(0, 10, step=2)
print(arange_tensor)
# 输出:
# tensor([0, 2, 4, 6, 8])

# 等间隔分布
linspace_tensor = torch.linspace(0, 1, steps=5)
print(linspace_tensor)
# 输出:
# tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])

5. 从已有张量创建

  • 使用 torch.clone 复制一个张量。
  • 使用 torch.empty_liketorch.zeros_like 基于现有张量的形状创建新张量。
# 克隆张量
original_tensor = torch.tensor([[1, 2], [3, 4]])
clone_tensor = original_tensor.clone()
print(clone_tensor)
# 输出:
# tensor([[1, 2],
#         [3, 4]])

# 创建与原张量形状相同的空张量
empty_like_tensor = torch.empty_like(original_tensor)
print(empty_like_tensor)
# 输出是未初始化的随机值

6. 创建未初始化的张量

使用 torch.empty 创建未初始化的张量。

empty_tensor = torch.empty(3, 3)
print(empty_tensor)
# 输出:
# tensor([[<未定义值>, <未定义值>, <未定义值>],
#         [<未定义值>, <未定义值>, <未定义值>],
#         [<未定义值>, <未定义值>, <未定义值>]])

7. 创建单位矩阵

使用 torch.eye 创建单位矩阵。

identity_tensor = torch.eye(3)  # 3x3 单位矩阵
print(identity_tensor)
# 输出:
# tensor([[1., 0., 0.],
#         [0., 1., 0.],
#         [0., 0., 1.]])

总结

  • 可以选择直接创建、初始化为全零或全一、生成随机数等方式。
  • 如果需要特定规则(比如等间距、单位矩阵等),使用 torch.arangetorch.eye
  • 对于高效操作,尽量预分配张量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值