📅  最后修改于: 2023-12-03 15:24:20.487000             🧑  作者: Mango
PyTorch 是一个开源的深度学习框架,它提供了一个基于张量操作的强大计算功能,支持自动微分和动态计算图,同时还提供了各种各样的优化器和损失函数,方便用户进行模型训练和测试。
在 PyTorch 中加入张量非常简单,只需要使用 torch.Tensor
或 torch.tensor
方法即可创建一个新的张量对象。这里介绍三种常见的创建张量的方法:
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
方法非常灵活,可以方便地支持不同类型的张量创建操作。
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
方法非常类似,但是它会尽量保持输入张量的数据类型不变。
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.Tensor
或 torch.tensor
方法即可创建一个新的张量对象。此外,我们还可以使用 torch.from_numpy
方法通过 Numpy 数组创建 PyTorch 张量。无论使用哪种方法,PyTorch 都会以张量的形式存储数据,方便我们进行各种计算操作。