PyTorch基础:Tensor类型张量的构建与相互转换
🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~
💡 创作高质量博文,分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)
🌵文章目录🌵
- 一、引言 🔥
- 二、Tensor的创建 🚀
- 三、Tensor之间的相互转换 🌈
- 四、总结 🎯
- 五、最后 🤝
一、引言 🔥
在深度学习和PyTorch框架中,张量(Tensor)是计算的基本单位。与NumPy数组类似,PyTorch的Tensor也是多维数组,但它可以在GPU上运行,从而加速计算。在PyTorch中,Tensor不仅用于存储数据,还用于执行各种数学运算。本文将详细介绍如何在PyTorch中构建Tensor类型张量,并探讨它们之间的相互转换。
二、Tensor的创建 🚀
在PyTorch中,可以使用多种方法来创建Tensor。以下是一些常用的方法:
- 从Python列表创建Tensor
import torch# 从Python列表创建Tensor
tensor_from_list = torch.tensor([1, 2, 3, 4, 5])
print(tensor_from_list)
输出:
tensor([1, 2, 3, 4, 5])进程已结束,退出代码0
- 从NumPy数组创建Tensor
import torchimport numpy as np# 从NumPy数组创建Tensor
numpy_array = np.array([[1, 2], [3, 4]])
tensor_from_numpy = torch.tensor(numpy_array)
print(tensor_from_numpy)
输出:
tensor([[1, 2],[3, 4]])进程已结束,退出代码0
- 使用
torch.zeros
和torch.ones
创建全零或全一Tensor
# 创建全零Tensor
zeros_tensor = torch.zeros(3, 4)
print(zeros_tensor)# 创建全一Tensor
ones_tensor = torch.ones(2, 2)
print(ones_tensor)
输出:
tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])
tensor([[1., 1.],[1., 1.]])进程已结束,退出代码0
- 使用
torch.rand
和torch.randn
创建随机Tensor
# 创建随机Tensor,值在[0, 1)之间
rand_tensor = torch.rand(2, 3)
print(rand_tensor)# 创建标准正态分布的随机Tensor
randn_tensor = torch.randn(2, 2)
print(randn_tensor)
输出(每次运行可能不同):
tensor([[0.3052, 0.2928, 0.1918],[0.6436, 0.6674, 0.3006]])
tensor([[ 0.4397, 0.0961],[-0.2740, 0.3176]])进程已结束,退出代码0
三、Tensor之间的相互转换 🌈
在PyTorch中,Tensor之间可以通过各种方式进行相互转换。以下是一些常用的转换方法:
- Tensor与NumPy数组之间的转换
import torch
import numpy as np# Tensor转换为NumPy数组
tensor = torch.tensor([[1, 2], [3, 4]])
numpy_array = tensor.numpy()
print(numpy_array)# NumPy数组转换为Tensor
numpy_array = np.array([[1, 2], [3, 4]])
tensor = torch.from_numpy(numpy_array)
print(tensor)
输出:
[[1 2][3 4]]
tensor([[1, 2],[3, 4]])进程已结束,退出代码0
- Tensor类型之间的转换
在PyTorch中,可以使用.to()
方法来转换Tensor的类型。例如,将Tensor从CPU转移到GPU,或更改其数据类型。
import torch# 创建一个CPU上的Tensor
cpu_tensor = torch.tensor([1.0, 2.0, 3.0])
print(cpu_tensor, cpu_tensor.dtype)# 将Tensor转移到GPU(如果可用)
if torch.cuda.is_available():gpu_tensor = cpu_tensor.to('cuda')print(gpu_tensor, gpu_tensor.dtype)# 更改Tensor的数据类型
float_tensor = torch.tensor([1, 2,3], dtype=torch.float32)
int_tensor = float_tensor.to(torch.int64)
print(int_tensor, int_tensor.dtype)
输出(如果CUDA可用):
tensor([1., 2., 3.]) torch.float32
tensor([1., 2., 3.], device='cuda:0') torch.float32
tensor([1, 2, 3]) torch.int64进程已结束,退出代码0
- Tensor的维度变换
在PyTorch中,可以使用view
, reshape
, permute
等方法来改变Tensor的维度。
import torch# 创建一个一维Tensor
tensor = torch.tensor([1, 2, 3, 4])
print(tensor)# 使用view方法改变维度为2x2
reshaped_tensor = tensor.view(2, 2)
print(reshaped_tensor)
输出:
tensor([1, 2, 3, 4])
tensor([[1, 2],[3, 4]])进程已结束,退出代码0
四、总结 🎯
在本文中,我们详细介绍了如何在PyTorch中创建Tensor类型张量,并探讨了它们之间的相互转换。通过掌握Tensor的创建和转换方法,我们可以更加灵活地处理深度学习模型中的数据。
五、最后 🤝
亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。
我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!
您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!
🎉 感谢阅读,祝你编程愉快! 🎉