📜  如何在 PyTorch 中加入张量?(1)

📅  最后修改于: 2023-12-03 15:24:20.487000             🧑  作者: Mango

如何在 PyTorch 中加入张量?

PyTorch 是一个开源的深度学习框架,它提供了一个基于张量操作的强大计算功能,支持自动微分和动态计算图,同时还提供了各种各样的优化器和损失函数,方便用户进行模型训练和测试。

在 PyTorch 中加入张量非常简单,只需要使用 torch.Tensortorch.tensor 方法即可创建一个新的张量对象。这里介绍三种常见的创建张量的方法:

1. 使用 torch.Tensor 方法创建张量

torch.Tensor 方法创建一个新的张量对象,可以接收多种类型的参数,包括 Python 列表、Numpy 数组、标量等,返回一个同样类型的张量对象。下面是一些示例代码:

import torch

# 创建一个空张量
x = torch.Tensor()
print(x)

# 创建一个大小为 (2,3) 的随机值张量
x = torch.Tensor(2, 3)
print(x)

# 创建一个从 Python 列表中创建张量
x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(x)

# 创建一个从 Numpy 数组中创建张量
import numpy as np
x = torch.Tensor(np.array([1,2,3]))
print(x)

# 创建一个从标量中创建张量
x = torch.Tensor(2, 3).fill_(5)
print(x)

上述代码中,我们创建了一个空张量、一个随机值张量、一个从 Python 列表中创建的张量、一个从 Numpy 数组中创建的张量、以及一个从标量中创建的张量。可以看到,torch.Tensor 方法非常灵活,可以方便地支持不同类型的张量创建操作。

2. 使用 torch.tensor 方法创建张量

torch.tensor 方法创建一个新的张量对象,它也可以接收多种类型的参数,但是它会尽量保持输入张量的数据类型不变。下面是一些示例代码:

import torch

# 创建一个空张量
x = torch.tensor(())
print(x)

# 创建一个从 Python 列表中创建张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(x)
print(x.dtype)

# 创建一个从 Numpy 数组中创建张量
import numpy as np
x = torch.tensor(np.array([1,2,3]))
print(x)
print(x.dtype)

# 创建一个从标量中创建张量
x = torch.tensor(2.345)
print(x)

上述代码中,我们首先创建了一个空张量,然后创建了一个从 Python 列表中创建的张量、一个从 Numpy 数组中创建的张量、以及一个从标量中创建的张量。可以看到,torch.tensor 方法和 torch.Tensor 方法非常类似,但是它会尽量保持输入张量的数据类型不变。

3. 使用 torch.from_numpy 方法创建张量

torch.from_numpy 方法可以通过 Numpy 数组创建 PyTorch 张量。它会返回一个新的张量对象,但是这个对象和输入的 Numpy 数组共享相同的存储空间,所以它们之间的值互相影响。下面是一些示例代码:

import torch
import numpy as np

# 创建一个 Numpy 数组
x = np.array([[1, 2, 3], [4, 5, 6]])

# 从 Numpy 数组中创建张量
y = torch.from_numpy(x)

# 修改 Numpy 数组的值
x[0][0] = 7

# 查看修改后的张量对象
print(y)

上述代码中,我们首先创建了一个 Numpy 数组 x,然后使用 torch.from_numpy 方法从它创建了一个张量对象 y。接着我们修改了 x 中的值,并打印了 y,可以看到这个张量对象和 Numpy 数组 x 之间共享相同的存储空间,因此修改其中一个的值,会影响另一个的值。

总结

在 PyTorch 中加入张量非常简单,只需要使用 torch.Tensortorch.tensor 方法即可创建一个新的张量对象。此外,我们还可以使用 torch.from_numpy 方法通过 Numpy 数组创建 PyTorch 张量。无论使用哪种方法,PyTorch 都会以张量的形式存储数据,方便我们进行各种计算操作。