pytorch入门笔记二

news/2024/7/7 22:53:26

torch.nn.Sequential

torch.nn.Sequential是一个容器,利用此容器可以快速简单的搭建一个简单的神经网络。这里以搭建一个三层神经网络为例。
首先该容器的参数分别是上一层到下一层的权重、激活函数,以此循环。
这里torch提供快速生成网络权重的方法:torch.nn.Linear(input,output)参数表示的分别是输入节点数和输出节点数。方法会根据输入输出节点数自动初始化一个权重矩阵。这里以输入节点数为10输出节点数为1为例

import torch
print(torch.nn.Linear(10,1).weight)#weight输出权重

输出结果为:

Parameter containing: tensor([[-0.2077, -0.2672, -0.1795, -0.1366,
0.1868, -0.0780, -0.2176, -0.0796,
0.1267, 0.0697]], requires_grad=True)

因此这里的权重可以直接使用Linear()方法随机生成。
同时还需要有激活函数。torch提供了非常多的激活函数。其中有常用的sigmoid()函数。
这里定义一个输入节点数为1,输出节点数为10,隐藏节点为100的神经网络为例

import torch
model=torch.nn.Sequential(
            torch.nn.Linear(28*28,100),#权重
            torch.nn.Sigmoid(),#激活函数
            torch.nn.Linear(100,10),#权重
            torch.nn.Softmax()#激活函数
        )

做完这些一个基本神经网络雏形出现了。
使用时只需要将输入值作为参数传入即可得到放回值

out=model(inputs)#inputs是输入内容,是tensor张量形式

在神经网络训练的时候为例更新权重,需要进行梯度传递。由于这里的权重封装,直接使用data.add_()方法很复杂,这里可以使用torch提供的优化器

torch.optim

torch.optim为我们提供了大量的优化器。不同的优化器有不同的特点。这里以常用优化器Adam(parameter,lr)为例,参数分别是是权重和初始学习率。
定义时将网络权重作为参数传入

opti=torch.optim.Adam(model.parameters(),lr=0.01)

在进行训练时,需要将梯度清零。目的是防止梯度累计,也就是在每一次训练前进行梯度清零。方法是

opti.zero_grad()

在完成一次训练输出时,将损失计算后进行梯度反传。就可以使用优化器方法step。进行权重更新

loss.backward()   #loss是计算出来的损失
opti.step()       #权重更新

以上就是基本的训练步骤。

model保存和加载

torch.nn.Sequential提供了一个方便快速定义神经网络的方式。
同时torch提供了一个保存和加载的方法。
对于一个训练好的神经网络可以使用方法save(model,‘name’)参数分别是 torch.nn.Sequential定义的容器和保存路径。该方法来保存权重和激活函数等信息。

torch.save(model,'model.data')  #将model保存到文件model.data中

同时也提供了加载函数。使用方法load(path)参数是文件路径,该方法可以直接从指定文件中读取保存的神经网络

model=torch.load('model.data')      #从文件model.data中读取一个神经网络

http://lihuaxi.xjx100.cn/news/2033604.html

相关文章

【QTableView】

QTableView是Qt框架中用于显示表格形式数据的部件,通常用于显示数据库查询结果、数据集以及其他类似的结构化数据。 以下是一个使用QTableView的简单示例,假设我们有一个数据库表存储了学生的信息,我们可以使用QSqlTableModel将数据库表关联到QTableView上,并显示出来: …

Python函数——函数的基础定义语法

一、引言 在Python编程中,函数是构建高效代码的关键。通过创建可重用的代码块,我们可以使程序更加清晰、易读且易于维护。在本文中,我们将深入了解Python函数的基本概念、特性以及如何在编程实践中灵活运用它们。 二、Python函数的基本概念 …

小程序列表下拉刷新和加载更多

配置 在小程序的app.json中,检查window项目中是否已经加入了"enablePullDownRefresh": true,这个用来开启下拉刷新 "window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": &q…

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

gpio 概述 刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在浮空输入状态 外部中断 所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个 GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,比如 PA1(或 PB1、…

【机器学习笔记】 9 集成学习

集成学习方法概述 Bagging 从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果: 假设一个班级每个人的成绩都不太好,每个人单独做的考卷分数都不高,但每个人都把自己会做的…

秒级到毫秒级的跨越—一次慢SQL优化历险

一次慢 SQL 优化过程 一、背景 对于公司内部的一个发票管理系统,财务人员经常需要对发票的开票交易进行查询,这里涉及到两张表:发票订单表和发票信息表,我们需要查询订单 ID、开票 APP、开票主体、订单类型、支付渠道、支付总额…

【.NET Core】深入理解async 和 await 理解

【.NET Core】深入理解async 和 await 理解 文章目录 【.NET Core】深入理解async 和 await 理解一、概述二、async异步执行机制理解三、async与await应用3.1 async与await简单应用3.2 带有返回值async与await应用 四、async和await中常见问题总结4.1 当方法用async标识时&…

Linux网络----防火墙

一、安全技术和防火墙 1、安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安…