Pytorch入门

Pytorch是一个Python机器学习框架,优点是可以使用GPU进行高维的矩阵运算,而且方便梯度计算。

对于数据的加载(Load),有Dataset和DataLoader两个库可以调用,参数shuffle用于设置是否打乱数据。

Tensor是Pytorch的数据组织格式,dim(维)和numpy中的axis含义相似。其创建可以分为两类方式:

        (1)基于数据创建(list或ndarray):

                x = torch.tensor([[1,-1],[1,-1]])

                x = torch.from_numpy(np.array([[1,-1],[1,-1]]))

        (2)0矩阵或单位阵,括号内定义了shape

                x = torch.zeros([2,2])

                x = torch.ones([1,2,5])

tensor有加减乘等运算,也有求和sum()和求平均mean()等函数,另外还有transpose、squeeze、unsqueeze、cat等对维度操作的函数。

可以对tensor x进行操作,使之在合适的设备上进行计算:
                x = x.to('cpu')

                x = x.to('cuda')

如何查看自己的电脑有没有gpu?使用下面一句话:

                torch.cuda.is_available()

有时显卡可能有多个,需要代码具体化是要用哪个gpu。下面的例子演示了梯度的计算。

接下来介绍如何定义神经网络。

torch.nn.Linear 函数是 PyTorch 的常用模块,用于实现一个全连接线性层。

一个简单的example方便理解。

PyTorch 中,torch.nn.Sequential是一个类,用于构建神经网络模型的容器。它允许用户按顺序地将多个网络层组合成一个整体的网络模型,下面是一个例子。

Pytorch中定义了常见的Loss Function可供调用:

torch.optim.SGD 是 PyTorch 中的一个优化器,用于实现随机梯度下降(Stochastic Gradient Descent, SGD)优化算法,它在每次训练中,都要完成梯度清零、反向传播以及更新参数的步骤,写一个简单的例子:

常规的网络训练流程:

在进行validation和testing的时候,要把梯度关掉,目的是为了避免验证集或测试集干扰模型参数。在训练过程中,要注意及时保存模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值