将 PyTorch Tensor 转换为 Python 列表
方法一使用.tolist()方法推荐importtorch# 创建一个 tensortensortorch.tensor([9.6919,-0.6950,11.8760,1.6362,8.3674,9.2179])# 转换为列表list_resulttensor.tolist()print(list_result)print(type(list_result))# 输出: [9.6919, -0.695, 11.876, 1.6362, 8.3674, 9.2179]# 输出: class list方法二使用list()函数importtorch tensortorch.tensor([9.6919,-0.6950,11.8760,1.6362,8.3674,9.2179])# 转换为列表list_resultlist(tensor)print(list_result)print(type(list_result))# 输出: [9.6919, -0.695, 11.876, 1.6362, 8.3674, 9.2179]# 输出: class list方法三使用.numpy()方法适用于 CPU tensorimporttorch tensortorch.tensor([9.6919,-0.6950,11.8760,1.6362,8.3674,9.2179])# 先转换为 numpy 数组再转换为列表list_resulttensor.numpy().tolist()print(list_result)print(type(list_result))处理 GPU Tensor如果 tensor 在 GPU 上需要先移动到 CPUimporttorch# 假设 tensor 在 GPU 上tensor_gputorch.tensor([9.6919,-0.6950,11.8760,1.6362,8.3674,9.2179]).cuda()# 先移动到 CPU再转换为列表list_resulttensor_gpu.cpu().tolist()print(list_result)处理多维 Tensorimporttorch# 二维 tensortensor_2dtorch.tensor([[1.0,2.0,3.0],[4.0,5.0,6.0]])# 转换为嵌套列表list_2dtensor_2d.tolist()print(list_2d)# 输出: [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]# 三维 tensortensor_3dtorch.tensor([[[1.0,2.0],[3.0,4.0]],[[5.0,6.0],[7.0,8.0]]])list_3dtensor_3d.tolist()print(list_3d)# 输出: [[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]]完整示例importtorchdeftensor_to_list(tensor): 将 PyTorch tensor 转换为 Python 列表 iftensor.is_cuda:# 如果在 GPU 上先移动到 CPUtensortensor.cpu()returntensor.tolist()# 测试tensortorch.tensor([9.6919,-0.6950,11.8760,1.6362,8.3674,9.2179])resulttensor_to_list(tensor)print(原始 tensor:,tensor)print(转换后的列表:,result)print(列表类型:,type(result))print(列表元素类型:,type(result[0]))注意事项.tolist()vslist():.tolist(): 推荐使用适用于任何维度的 tensor返回嵌套列表list(): 只适用于一维 tensor对于多维 tensor 会返回 tensor 列表而不是数值列表数据类型: 转换后的列表元素会保持 tensor 的数据类型如 float32、float64 等性能: 对于大型 tensor.tolist()可能比list()稍快梯度: 如果 tensor 有梯度.tolist()会自动处理只返回数值推荐做法始终使用.tolist()方法因为它适用于任何维度的 tensor自动处理 CPU/GPU 转换需要先调用.cpu()代码更清晰易读性能更好# 最佳实践list_resulttensor.tolist()# 对于 CPU tensor# 或list_resulttensor.cpu().tolist()# 对于可能在 GPU 上的 tensor