pytorch入门第一天

news2024/11/14 15:31:29

今天作为入门pytorch的第一天。打算记录每天学习pytorch的一些理解和笔记,以用来后面回顾。当然如果能帮到和我一样的初学者,那也是不胜荣幸。作为一名初学者,难免有些地方会现错误,欢迎各位大佬指出

预备知识

这里主要介绍pytorch的矩阵一些相关知识。矩阵总所周知是神经网络里重要内容,信号传递等都需要用到矩阵的一些知识。
这里的矩阵和numpy库中基本相似。使用基本运算符+-*/和另一个矩阵相乘都是对应元素进行运算。如果需要矩阵间的乘法(主要使用的运算)这需要使用方法a.mm(b)这里就是矩阵a和矩阵b使用矩阵乘法

torch和numpy里矩阵的一些区别

首先在numpy里矩阵一般都是直接作为数字计算,不会纠结变量类型,但是在torch中有矩阵元素类型。如果两个矩阵类型不相同进行运算操作(例如矩阵乘法)可能会导致报错。在初始化时可以直接定义类型

import torch
a=torch.tensor([1,2],dtype=float)#定义时声明类型为float

其次在torch中tensor在较高版本的torch中和自动微风变量合并了。如果需要声明此变量是自动微分变量(自动微分变量通俗理解就是可以自动求导,方便更新参数),需要在定义时声明requires_grad参数为True

a=torch.tensor([1,2],requires_grad=True,dtype=float)

自动微分变量可以用来更新神经网络权重等。例如以下代码

x = torch.linspace(0, 100,100).type(torch.FloatTensor)
rand =torch.randn(100)* 10
y = x + rand
x_train = x[: -10]
x_test = x[-10 :]
y_train = y[: -10]
y_test = y[-10 :]
learning_rate = 0.0001
for i in range(1000):# 计算在当前a、b条件下的模型预测值
    predictions = a.expand_as(x_train) * x_train +b.expand_as(x_train)
    loss = torch.mean((predictions - y_train) ** 2) #损失
    loss.backward() # 对损失函数进行梯度反传
    a.data.add_(- learning_rate * a.grad.data)   
    b.data.add_(- learning_rate * b.grad.data)  
    a.grad.data.zero_() # 清空a的梯度数值   
    b.grad.data.zero_() # 清空b的梯度数值

上述代码可以实现对一个一元函数更新。
这里另一个需要注意的点时一个变量被声明为自动微分变量后将损失传递后会有梯度信息,这个信息如果再次更新是通过相加更新的,也就是说如果用完梯度信息后如果不对梯度进行清空会导致梯度累加,影响模型的训练

激活函数

目前我所学的激活函数有三种,分别是:

  • sigmoid()函数,也就是logist函数,图像是
    在这里插入图片描述
  • softmax()函数,此函数就是使得结果相加等于1。目的是为了使结果为1。通常用于分类问题,使得所有输出节点值相加等于1.
  • relu()函数,这也是通常用于分类问题。图像特点是
  • 在这里插入图片描述

上述三个函数各有特点,目前学的就是在隐藏层用sigmoid激活函数,在输出层使用下面两个函数

编码处理

这里的编码处理是指神经网络输出结果的编码。对于问题通过有两种类型

  • 对数字大小不敏感,数字只是作为一个结果或者现象的表示。例如天气,1代表天气,2代表下雨。此时大小无意义
  • 对数字大小敏感,数字大小是结果的。例如重量

此时对这两种问题有两种不同措施:

  • 对于第一种问题,通常采用一种名为独热编码的方式。就是将输出层设置多个节点,一个节点代表一个类型(例如表示天气,一个节点表示晴天一个表示雨天)结果有几个类型就有几个输出节点。输出节点中值最大的就是最终答案。

  • 对于第二种问题,无需多少就是常规的方法,一个输出。但是这里通常需要使用归一化,这样可以加快训练速度。

torch自带的容器

torch自带神经网络容器(我也不知道是不是叫容器)。使用该容器可以快速构建一个神经网络。

import torch.nn as nn
model = nn.Sequential(   
	 	nn.Linear(len(diction), 10),
    	nn.ReLU(),    
   		nn.Linear(10, 2),  
     	nn.LogSoftmax(dim=1),)

Linear(a,b)函数是创建一个线性层,输入a个节点,输出节点数是b
这里有四个参数。分别是输入层到达隐藏层的权重、隐藏层的激活函数、隐藏层到达输出层的权重、输出层的激活函数。
使用该网络时直接将输入传入就会返回一个输出结果

output=model(input)

数据集的划分

一般的一个数据集通常划分为三个部分。分别是训练集、校验集、测试集。
其中训练集用来训练。
校验集用来验证是否出现过拟合等现象,这样可以及时调整超参数(学习率等)。如果出现过拟合现象通常是校验集的损失曲线上升等。
验证集用来验证最终训练结果的正确率。
通常上述三个集合比例是8:1:1。
很明显只要训练集的参数用来训练调整参数,校验集和验证集都不能用来训练调整参数,否则就失去了意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1441231.html

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

相关文章

从0开始学Docker ---Docker安装教程

Docker安装教程 本安装教程参考Docker官方文档,地址如下: https://docs.docker.com/engine/install/centos/ 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest…

MySQL篇之索引

一、定义 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B树),这些数据结构以某种方式引用(指向)数据&#xff0…

Python爬虫requests库详解#3

使用 requests 上一节中,我们了解了 urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作,就有了更为强大的库 requests&…

Cisco firepower2100系列使用FDM管理FTD

Cisco firepower2100系列使用FDM管理FTD 啥是FDM Firepower Device Manager 当思科Firepower系列运行的FTD镜像时,可以通过2种方式进行管理 第1种方式: FMC (Firepower management Center) 可以进行统一管理,一台FMC可以管理多个FTD&…

深度学习入门笔记(八)可以不断思考的模型:RNN与LSTM

8.1 循环神经网络RNN 之前学到的 CNN 和全连接,模型的输入数据之间是没有关联的,比如图像分类,每次输入的图片与图片之间就没有任何关系,上一张图片的内容不会影响到下一张图片的结果。但在自然语言处理领域,这就成了…

【vue3学习笔记】shallowReactive与shallowRef;readOnly与shallowReadOnly;toRaw与markRaw

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 课程 P158节 《shallowReactive与shallowRef》笔记: reactive()与shallowReactive():reactive()处理后的数据是响应式的,对象内嵌套的深层结构全部是响应式的。shallowReactive()处理后的数据…

蓝桥杯---分小组

9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C .... I 下面的程序列出了所有的分组方法。 该程序的正常输出为:

Guava RateLimiter单机实战指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Guava RateLimiter单机实战指南 前言maven坐标引入业务实现重要参数和方法关于warmupPeriod实战 前言 想象一下你是一位大厨,正在烹饪美味佳肴。突然之间,前来就餐的人潮如潮水…

C语言辨析——声明int a[3][6], a[0][9]越界吗?

本文来源&#xff1a;声明int a[3][6], a[0][9]越界吗&#xff1f; 1. 问题 看下面的程序&#xff1a; #include <stdio.h> int main(void) {int a[3][6];for(int i0; i<3; i) {for(int j0; j<6; j){a[i][j] i * 6 j;}}printf("%d\n",a[0][9]);retu…

Uniapp(uni-app)学习与快速上手教程

Uniapp&#xff08;uni-app&#xff09;学习与快速上手教程 1. 简介 Uniapp是一个跨平台的前端框架&#xff0c;允许您使用Vue.js语法开发小程序、H5、安卓和iOS应用。下面是快速上手的步骤。 2. 创建项目 2.1 可视化界面创建 1、打开 HBuilderX&#xff0c;这是一款专为uni…

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

计算机网络基本知识(二)

文章目录 概要分层为什么分层怎么分层&#xff1f;1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识&#xff1a;概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题&#xff08;复杂&#xff09; 大问题划分为小问题 怎么分层&#…

Lua 教程

Lua 教程 (今天又又又开新坑啦) Lua 教程 手册简介 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放。 手册说明 Lua是什么? Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of Rio de …

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析

一、案例介绍&#xff1a; A公司共有13个开在不同银行的帐户&#xff0c;分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况&#xff0c;查看银行在哪个月交易量频繁&#xff0c;需要每月汇总各个银行的帐户借方和贷方金额&#xff0c;并将其净收支&am…

人大金仓bat文件备份数据库

1&#xff09;使用环境变量来存储密码 setx KINGBASE_PASSWORD "abc123" 2&#xff09;编写backup.bat :: 设置备份参数 set "sys_dumpc:\Program Files\Kingbase\ES\V8\KESRealPro\V008R006C008B0014\ClientTools\bin\sys_dump" set "hostloca…

【经验】SPICE仿真 - Bob Pease会说No吗?

每一个读过我博客的人都知道&#xff0c;我使用SPICE模型仿真电路。你可能听说过Bob Pease&#xff0c;在SPICE领域相当执有己见&#xff0c;他曾经说过&#xff1a;“SPCIE模型削弱了你对所发生事物的洞察能力。SPICE模型实际上降低了你对电路如何工作的理解能力”。今天&…

创建本地yum源并安装tree命令(openEuler-20.03-LTS-SP3)

步骤 1&#xff1a;下载ISO镜像 首先&#xff0c;您需要从提供的URL下载ISO镜像文件&#xff1a; cd /opt wget https://mirrors.dotsrc.org/openeuler/openEuler-20.03-LTS-SP3/ISO/x86_64/openEuler-20.03-LTS-SP3-x86_64-dvd.iso步骤 2&#xff1a;挂载ISO镜像 接下来&am…

计网——运输层、端口号

目录 运输层 1 进程之间的通信 运输层的作用 屏蔽作用 可靠信道与不可靠信道 2 运输层的两个主要协议 3 运输层的端口 端口号 (protocol port number) 软件端口 硬件端口 TCP/IP 运输层端口的标志 两大类、三种类型的端口 常用的熟知端口 运输层 1 进程之间的通信 …

医院挂号预约|医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序目录 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;医院管理 &#xff08;3&#xff09;医生管理 &…

如何运行心理学知识(心流)来指导工作和生活

如何运用心流来指导工作和生活 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com GitHub&#xff1a;https://github.com/thinkingfioa/ReadingSummary 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习…