pytorch基础(一)

这篇博客介绍了PyTorch的基本概念和操作,包括张量的初始化、加减乘运算,以及如何将张量转换到GPU上运行。内容详细解释了张量的创建、加法、乘法(按位和矩阵乘法)以及连接操作,并提供了相关代码示例。此外,还提及了GPU支持和未来可能的PyTorch-GPU配置教程。
摘要由CSDN通过智能技术生成

pytorch基础(一)

因为前一段时间刚好在做一个项目的时候进行了TensorFlow到pytorch代码的转换,因此基本上从零开始学习了两个机器学习库,所以接下来这几篇博客将会简单介绍pytorch和TensorFlow如何进行机器学习,然后介绍一下如何在这两者之间进行代码的转换。

1.引入

首先,要明确我们为什么需要使用pytorch库或是TensorFlow库,这肯定是为了简化机器学习的代码。而相比较而言,pytorch比TensorFlow更加简单,因此上手也更加容易。以下部分主要结合pytorch官网上的DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ教程与个人对pytorch的认识对pytorch的基础知识进行简要讲解。
pytorch官网教程如下:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

2.pytorch基础知识

2.1 tensor

张量是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于 NumPy 的 ndarray,不同之处在于张量可以在 GPU 或其他专用硬件上运行以加速计算。简单来说其实tensor可以简单地理解成矩阵,对于tensor的操作事实上就是对于矩阵的操作(这里如有不对请批评指正),因此对于tensor存在初始化、加减乘等基本操作,基本与矩阵操作对应,具体示例代码如下:
初始化:

import torch
import numpy as np
#-------------------初始化-----------------#
#直接初始化
data = [[1, 2],[3, 4]]
x_data = torch.tensor(data)#tensor
#从ndarry到tensor
np_array = np.array(data)
x_np = torch.from_numpy(np_array)
#从tensor到tensor
x_ones = torch.ones_like(x_data) # retains the properties of x_data
print(f"Ones Tensor: \n {x_ones} \n")
x_rand = torch.rand_like(x_data, dtype=torch.float) # overrides the datatype of x_data
print(f"Random Tensor: \n {x_rand} \n")
##输出:
# Ones Tensor:
#  tensor([[1, 1],
#         [1, 1]])
#
# Random Tensor:
#  tensor([[0.6009, 0.6299],
#         [0.5992, 0.6752]])

#一些常见初始化命令
shape = (2,3,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)

print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")
#输出
# Random Tensor:
#  tensor([[0.6660, 0.4187, 0.9762],
#         [0.7766, 0.8118, 0.1959]])
# 
# Ones Tensor:
#  tensor([[1., 1., 1.],
#         [1., 1., 1.]])
# 
# Zeros Tensor:
#  tensor([[0., 0., 0.],
#         [0., 0., 0.]])

2.2 tensor运算

tensor的运算可以分为加减乘运算,具体如下:

2.2.1 pytorch转换为GPU运行命令:

if torch.cuda.is_available():
  tensor = tensor.to('cuda')

配置GPU版pytorch教程可见网上教程,过几天如果我有时间可以写一篇教程。

2.2.2 tensor加法

直接用+号相连两个tensor即可,示例代码如下:

x=ones_tensor+ones_tensor
print(x)

输出结果如下:

tensor([[2., 2., 2.],
        [2., 2., 2.]])

减法也类似,不再赘述。

2.2.3 tensor乘法

tensor的乘法有两种形式,一个是按位相乘,一个是按照矩阵运算规则运算,分别展示如下:

# 按位相乘
print(f"tensor.mul(tensor) \n {ones_tensor.mul(ones_tensor)} \n")
# Alternative syntax:
print(f"tensor * tensor \n {ones_tensor * ones_tensor}")
# 矩阵乘法法则
print(f"tensor.mm(tensor) \n {ones_tensor.mm(ones_tensor.t())} \n")

输出结果如下:

tensor.mul(tensor) 
 tensor([[1., 1., 1.],
        [1., 1., 1.]]) 

tensor * tensor 
 tensor([[1., 1., 1.],
        [1., 1., 1.]])
tensor.mm(tensor) 
 tensor([[3., 3.],
        [3., 3.]]) 

也就是说,torch.mul是按位相乘,x[i][j]=tensor1[i][j]*tensor2[i][j];
而torch的乘法则满足矩阵乘法规则,需要前一个tensor的列数等于后一个tensor的行数。

2.2.4 tensor的连接

使用的函数是torch.cat,其中的dim参数如果设置为0,则几个tensor按行连接,如果设置为1,则几个tensor按列连接,具体如下

#按列连接
x=torch.cat([ones_tensor,ones_tensor,ones_tensor],dim=1)
print(x)

输出结果:

tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1.]])
#按行连接
x=torch.cat([ones_tensor,ones_tensor,ones_tensor],dim=0)
print(x)
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])

tensor的一些基本操作就是上述操作,下一个博客将会介绍如何使用pytorch搭建一个简单的神经网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值