pytorch入门笔记二

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://www.mzph.cn/news/688888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis框架-动态SQL

动态SQL 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必…

Axios学习

文章目录 Axios1.Json-server的搭建2.Axios的基本使用3.Axios的其他使用4.Axios响应结果的结构分析5.Axios配置对象详细说明6.axios的默认配置7.axios创建实例对象(create)8.axios拦截器1.请求拦截器2.响应拦截器 9.取消请求10.源码分析 Axios 1.Json-s…

小迪安全25WEB 攻防-通用漏洞SQL 读写注入MYSQLMSSQLPostgreSQL

#知识点: 1、SQL 注入-MYSQL 数据库 2、SQL 注入-MSSQL(SQL server) 数据库 3、SQL 注入-PostgreSQL 数据库 #详细点: Access 无高权限注入点-只能猜解,还是暴力猜解 因为access的数据库是独立存在的,不存在统一管理 …

05 SS之结合SS+Redis+JWT实现认证

之前的一切的有一个比较显著的问题是: 假如用户主动登出, 这意味着系统应将用户的token作废, 但实际上并未实现这一步, 导致了即使用户登出, 只要token在有效期内, 用户仍能凭借token直接进入. 即token处于一个无法销毁的状态. 可以借助Redis. 核心步骤是 ① 第一次登陆成…

GitLab安装配置

一、GitLab的简介 GitLab是开源的代码托管平台,提供版本控制功能、代码审查、持续集成等工具,帮助团队协作开发软件项目。用户可以创建仓库存储代码,管理问题追踪,部署自动化流程等。 二、GitLab的安装 1、Rocky_Linux 下载安装 …

c# B+树

B 树是一种自平衡的树数据结构,通常用于数据库和文件系统等需要大量数据插入、删除和搜索操作的场景。与 B 树不同的是,B 树的内部节点不存储数据,只用作索引,所有的数据都存储在叶子节点上。这种特性使得 B 树的数据检索效率更高…

应用回归分析:多重共线性

多重共线性的概念 在回归分析中,我们通常关注的是如何利用一个或多个自变量(解释变量)来预测一个因变量(响应变量)。当我们使用多元线性回归模型时,理想的情况是模型中的每一个自变量都能提供独特的、对因…

【嵌入式学习】C++QT-Day6-C++基础

作业: 1.思维导图 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 2.编程题: 以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了…

2024 前端面试题(GPT回答 + 示例代码 + 解释)No.114 - No.121

本文题目来源于全网收集,答案来源于 ChatGPT 和 博主(的小部分……) 格式:题目 h3 回答 text 参考大佬博客补充 text 示例代码 code 解释 quote 补充 quote 上一篇链接:2024 前端面试题(GPT回答 示例…

汽车网络安全--关于供应商网络安全能力维度的思考

目录 1.关于CSMS的理解 2.OEM如何评审供应商 2.1 质量评审 2.2 网络安全能力评审 3.小结 1.关于CSMS的理解 最近在和朋友们交流汽车网络安全趋势时,讨论最多的是供应商如何向OEM证明其网络安全能力。 这是很重要的一环,因为随着汽车网络安全相关强…

三防平板电脑丨亿道工业三防平板丨三防平板定制丨机场维修应用

随着全球航空交通的增长和机场运营的扩展,机场维护的重要性日益凸显。为确保机场设施的安全和顺畅运行,采取适当的措施来加强机场维护至关重要。其中,三防平板是一种有效的工具,它可以提供持久耐用的表面保护,使机场维…

前端中的强缓存与协商缓存

强缓存:是直接从本地缓存中加载资源,不向服务器发起请求,除非过期了。这种方式可以减少网络延迟,提高页面加载速度,但无法保证资源的最新性 皮一下 : 不管你咋样,我都不搭理你,除非我真的无聊了&#xff0…

微信小程序 搜索框实现模糊搜索(带模拟数据,js,wxml,wxss齐全)

最近在做一个小程序的页面,搜索框困扰了我很久,今天终于把搜索框给做了出来,记录一下过程 我主要使用的就是wx的if,当我输入框用户点击的时候,我前面的显示界面添加上false属性,然后我搜索页面显示出true的…

小程序API能力汇总——基础容器API(三)

ty.getAccountInfo 获取小程序账号信息 需引入MiniKit,且在>3.1.0版本才可使用 参数 Object object 属性类型默认值必填说明completefunction否接口调用结束的回调函数(调用成功、失败都会执行)successfunction否接口调用成功的回调函数…

【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景

文章目录 Jvm基本组成一.什么是JVM类的加载二.类的生命周期阶段1:加载阶段2:验证阶段3:准备阶段4:解析阶段5:初始化 三.类初始化时机四.类加载器1.引导类加载器(Bootstrap Class Loader)2.拓展类…

leetcode13题罗马数字转成整数

代码 public static int romanToInt(String s) {// 创建一个HashMap&#xff0c;将罗马数字字符映射为整数值HashMap<Character, Integer> map new HashMap<>();map.put(I, 1);map.put(V, 5);map.put(X, 10);map.put(L, 50);map.put(C, 100);map.put(D, 500);map.…

Eclipse 创建 Hello World 工程

Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name&#xff1a;工程名…

Matlab|基于支持向量机的电力短期负荷预测【最小二乘、标准粒子群、改进粒子群】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序主要是对电力短期负荷进行预测&#xff0c;采用三种方法&#xff0c;分别是最小二乘支持向量机&#xff08;LSSVM&#xff09;、标准粒子群算法支持向量机和改进粒子群算法支持向量机三种方法对负荷进行…

Python在无人炸弹

Python在无人炸弹研发开发中具有重要的作用。以下是几个方面的重要性&#xff1a; 简单易学的语法&#xff1a;Python是一种简单易学的编程语言&#xff0c;其语法清晰简洁&#xff0c;易于理解和编写。这使得开发人员能够更快速地实现想法和解决问题。 丰富的库和框架&#x…

LeetCode每日一题【209. 长度最小的子数组】

题目&#xff1a; 思路1&#xff1a;暴力循环 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int len INT_MAX;for(int i0;i<nums.size();i){int sum 0;for(int ji;j<nums.size();j){sumnums[j];if(sum>target){len mi…