📅  最后修改于: 2023-12-03 14:48:01.280000             🧑  作者: Mango
torch.from_numpy
介绍torch.from_numpy
是PyTorch中的一个函数,用于将numpy数组转换为torch张量。它创建一个新的张量,与给定的numpy数组共享相同的底层数据缓冲区,而不需要复制数据。这使得在PyTorch和NumPy之间共享数据变得更加高效和方便。
import numpy as np
import torch
# 创建一个numpy数组
numpy_array = np.array([[1, 2, 3], [4, 5, 6]])
# 使用torch.from_numpy将numpy数组转换为torch张量
torch_tensor = torch.from_numpy(numpy_array)
# 打印torch张量
print(torch_tensor)
# 输出:
# tensor([[1, 2, 3],
# [4, 5, 6]], dtype=torch.int32)
torch.from_numpy
函数返回一个新的torch张量,与numpy数组共享相同的底层数据。这意味着如果修改了其中一个,另一个也会发生变化。
torch.from_numpy
只能接受numpy数组作为参数,不接受其他序列类型(如列表)作为输入。
默认情况下,torch.from_numpy
保留numpy数组的数据类型。如果需要更改数据类型,可以在转换后的张量上使用.type()
方法。
numpy_array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
torch_tensor = torch.from_numpy(numpy_array)
# 更改为torch.float64类型
torch_tensor = torch_tensor.type(torch.float64)
.clone()
方法可以创建一个新的张量,无论如何修改都不会影响原始的numpy数组。numpy_array = np.array([1, 2, 3])
torch_tensor = torch.from_numpy(numpy_array)
# 修改numpy数组
numpy_array[0] = 5
print(numpy_array) # 输出: [5, 2, 3]
print(torch_tensor) # 输出: tensor([5, 2, 3], dtype=torch.int32)
# 创建一个与torch_tensor无关的新张量
new_tensor = torch_tensor.clone()
# 修改new_tensor
new_tensor[0] = 10
print(torch_tensor) # 输出: tensor([5, 2, 3], dtype=torch.int32)
print(new_tensor) # 输出: tensor([10, 2, 3], dtype=torch.int32)
torch.from_numpy
函数在将numpy数组转换为torch张量时非常有用,特别是在将数据导入PyTorch进行深度学习任务时。它提供了一种便捷的方式,避免了不必要的数据复制操作,同时也保证了数据的一致性和高效性。