list高效转为tensor

在处理数据时,将 list 转换为 ndarray 再转换为 Tensor 的过程通常比直接将 list 转换为 Tensor 更快。这是因为 ndarray 是 NumPy 库的核心数据结构,具有高效的存储和操作特性,而 Tensor 是 PyTorch 框架中的数据结构,需要额外的转换过程。 将 list 转换为 ndarray 可以使用 NumPy 库提供的 numpy.array() 函数或者 numpy.asarray() 函数。这些函数将 list 转换为 NumPy 的多维数组对象 ndarray,可以更高效地存储和操作数据。然后,将 ndarray 转换为 Tensor 可以使用 PyTorch 提供的 torch.from_numpy() 函数或者 torch.tensor() 函数。这些函数将 ndarray 转换为 PyTorch 的 Tensor 对象,以便在深度学习模型中使用。

下面是一个示例,比较了直接将 list 转换为 Tensor 和先将 list 转换为 ndarray 再转换为 Tensor 的时间消耗:

import time  
import numpy as np  
import torch  
  
# 示例数据  
data_list = [1, 2, 3, 4, 5] * 10000000  
  
# 直接将 list 转换为 Tensorstart_time = time.time()  
tensor_direct = torch.tensor(data_list)  
end_time = time.time()  
time_direct = end_time - start_time  
  
# 将 list 转换为 ndarray 再转换为 Tensorstart_time = time.time()  
ndarray = np.array(data_list)  
tensor_ndarray = torch.from_numpy(ndarray)  
end_time = time.time()  
time_ndarray = end_time - start_time  
  
print("Time (Direct):\t", time_direct)  
print("Time (Ndarray):\t", time_ndarray)

输出为:

Time (Direct):	 2.8909246921539307
Time (Ndarray):	 1.2160460948944092

根据测试结果,通常情况下,将 list 转换为 ndarray 再转换为 Tensor 的过程相对较快,因为 ndarray 可以更高效地存储和操作数据。然而,实际的效果可能因数据量的大小、数据类型和硬件环境等因素而有所不同,建议在具体应用中进行实际测试以确定最佳的转换方式。