Pytorch深度学习与入门实战

news2024/10/1 21:41:19

Pytorch深度学习入门与实战

  • Pytorch简介
    • Pytorch特点
    • PyTorch安装环境要求
    • PyTorch兼容的Python版本
    • 搭建开发环境
    • 下载Miniconda![下载miniconda](https://img-blog.csdnimg.cn/adace1a2f7ae476aa883b53203477c92.pn
    • Pytorch官网地址
    • GPU版本安装
    • 检查显卡驱动
    • 依赖库安装
  • 机器学习基础与PyTorch实现简单线性回归
    • 机器学习基础
    • 损失函数
  • 张量与基本数据类型
  • matmul 矩阵乘法

Pytorch简介

Pytorch是一个能在CPU和GPU上运行并解决各类深度学习问题的深度学习框架。可以将其看做是支持GPU计算和自动微分计算的Numpy库。
在PyTorch诞生之前,像caffe和torch这样的深度学习库是很受欢迎的深度学习库。随着深度学习快速发展,开发人员和研究人员希望有一个高效、易于使用的框架,并且以Python编程语言构建、训练和评估神经网络。
PyTorch简介
PyTorch是一个灵活容易学习python库,在学术和研究领域PyTorch是最受欢迎的深度学习库。
PyTorch是Tensorflow最强有力的竞争对手。
PyTorch框架的产生受到Torch和Chainer这两个框架的启发。
与Torch使用Lua语言相比,PyTOrch是一个python优先的框架,我们可以继承PyTorch类然后自定义。
与Chainer类型,PyTorch框架具有自动求导的动态图功能,也就是所谓define by run,即当python解释器运行到相应的行时,才创建计算图。

Pytorch特点

  • 易于使用的API——它就像python一样简单。
  • python的支持——PyTorch可以顺利地与python数据科学集成。它非常类似于Numpy.
  • 动态计算图——取代了具有特定优势的静态图,pytorch为我们提供了一个框架,以便可以在运行时构建计算图,甚至在运行时更改它们。
  • 部署简单——pytorch提供了可用于大规模部署Pytorch模型的工具torchserve.TorchServe是pytorch开源项目的一部分,是一个易于使用的工具,用于大规模部署Pytorch模型。
  • 支持分布式训练——pytorch可实现研究和生产中的分布式训练和性能优化。
  • 支持移动端——Pytorch支持从python到IOS和安卓系统部署的端到端工作流程。
  • 强大的生态系统——pytorch具有丰富的工具和库等生态系统,为计算机视觉、NLP等方面的开发提供便利。
  • 内置开放神经网络交换协议(ONNX)——可以很方便与其他深度学习框架互操作。

PyTorch安装环境要求

PyTorch安装环境要求

PyTorch兼容的Python版本

windows上的Pytorch仅支持python 3.7-3.9,不支持python 2.x

搭建开发环境

推荐使用Miniconda搭建python环境
Miniconda是最小的conda安装环境,它提供了:
1.Conda包管理工具
2.python

下载Miniconda![下载miniconda](https://img-blog.csdnimg.cn/adace1a2f7ae476aa883b53203477c92.pn

GPU版本的python可以利用NVIDIA GPU强大的计算加速能力,使Python的运行更为高效,尤其是可以成倍提升模型训练的速度。

Pytorch官网地址

https://pytorch.org/get-started/locally/
快速下载CPU版本torch的网址:pip3 install torch torchvision torchaudio -i https://pypi.doubanio.com/simple

GPU版本安装

GPU版本安装
CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
为了使用CUDA,需要安装cudatolkit,在这里我们与pytorch一并都使用conda安装。

检查显卡驱动

检查显卡驱动
GPU版本安装
这样网站会给出我们具体的安装命令,我们在anaconda prompt(miniconda3)命令行中参考网站给出的安装命令执行安装即可。

依赖库安装

依赖库安装

机器学习基础与PyTorch实现简单线性回归

机器学习基础

什么是机器学习呢?所谓机器学习,就是让计算机从数据中学习到规律,从而做出预测。很多时候,我们很难直接编写一个算法解决问题,比如一张图片,很难编写算法直接正确预测这张图片是猫还是狗。
为了解决这个问题,人们想到数据驱动方法,也就是让计算机从现有的大量的带标签图片中学习规律,一旦计算机学习到了其中的规律,当我们输入一张新的图片给计算机时,它就可以准确的预测出这张图片到底是猫还是狗。
这里有两个关键的因素,
一是大量的可学习数据,比如带标签的猫狗图片;
二是学习的主体,我们一般称之为模型。
如何理解模型呢?
你可以把模型认为是一个映射函数,它包含一些参数,这些参数可以与输入进行计算得到一个输出,我们一般称之为预测结果。
所谓模型学习的过程,就是模型修正其参数、改进映射关系的过程。
可以简单的把模型的学习过程总结如下,以预测图片是猫还是狗为例:
1.创建模型;
2.输入一张带标签的图片;
3.使用模型对此图片做出预测;
4.将预测结果与实际标签比较,产生的差距为损失;
5.以减小损失为优化目标,根绝损失优化模型参数;
6.循环重复上述第2-5步。

损失函数

损失函数:使用均方误差作为成本函数,也就是预测值和真实值之间差的平方取均值。
成本函数与损失函数:优化的目标(y代表实际的收入):找到合适的W和b,使得(f(x)-y)的平方越小越好,也就是求解合适的参数w和b.`
模型的创建如下所示:

class EIModel(nn.Module):定义类继承自nn.Module
    def __init__(self):
        super(EIModel, self).__init__()
        self.linear = nn.Linear(in_features=1, out_features=1)
    def forward(self, inputs):
        logits = self.linear(inputs)
        return logits
	model = EIModel()模型实例化
	opt = torch.optim.SGD(model.parameters(), lr=0.0001)优化器

	for epoch in range(5000):训练5000for x, y in zip(X, Y):
        y_pred = model(x)
        loss = loss_fn(y_pred, y)计算损失
        opt.zero_grad()梯度清零
        loss.backward()损失反向传播
        opt.step()优化参数
        list(model.parameters())返回优化后的模型参数
        list(model.named_parameters())
        
plt.scatter(data.Education, data.Income)绘制优化后的模型参数
plt.xlabel('Education')
plt.ylabel('Income')

plt.plot(X, model(X).detach().numpy(), c='r')
       

返回模型的权重和偏移参数
训练后的模型展示
*** 创建模型的总结:
1.输入数据处理
2.创建模型
3.训练
4.预测、评价

张量与基本数据类型

Tensor(张量)
Pytorch最基本的操作对象是Tensor(张量),它表示一个多维矩阵张量类似于NumPy的ndarrays,张量可以在GPU上使用以加速计算。
张量是基于向量和矩阵的推广,我们可以将标量视为零阶张量,向量视为一节张量,矩阵就是二阶张量。
张量是支持高效的科学计算的数组,它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。
张量(tensor)和NumPy的数组ndarray通常可以共享相同的底层内存,无需复制数据。
import torch
import numpy as np

t = torch.FloatTensor([1, 2, 3])创建float32类型的数据
t = torch.LongTensor([1, 2])创建int64位类型的数据

Tensor的最基本数据类型
Tensor的最基本数据类型

torch.rand(2,3)01之间随机分布的随机数,创建一个两行三列的tensor数据
t = torch.randn(2, 3)      随机创建一个2*3的正态分布

shape返回tensor的形状 dtype返回tensor的类型
t.add_(t1) 代表t+t1的运算结果返回给t,就地改变t的值
torch.abs(t)代表求t的绝对值
t.T # 转置 shape : (3, 2) 大写的T代表转置,表示将23的矩阵t,转换为32的矩阵T

matmul 矩阵乘法

t.matmul(t.T) 表示一个23的矩阵t,与一个32的矩阵T,进行矩阵乘法运算。
t@(t.T)等同于t.matmul(t.T)
t.sum().item()将tensor的数据类型转换为python的浮点型数据进行打印
t1 = torch.from_numpy(np.random.randn(3, 4)) 表示将numpy类型的数据,转换为array类型
t1.numpy() 表示将array类型的数据转换为numpy类型
view方法
squeeze方法去除维度为1的维度
requires_grad与grad_fn函数的运用

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

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

相关文章

【备战面试】TCP的三次握手与四次挥手

本篇总结的是计算机网络知识相关的面试题,后续也会更新其他相关内容 文章目录1、TCP头部结构2、三次握手3、四次挥手4、为什么TCP连接的时候是三次?两次是否可以?5、为什么TCP连接的时候是三次,关闭的时候却是四次?6、…

【工具使用】STM32CubeMX-CRC配置

一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的CRC外设配置及CRC校验的一些基…

【018】筛选数据(模糊筛选)_#VBA

模糊筛选1. 原因2. 参考3. VBA指令3.1 将 * 添加在 C 的两侧即可筛选所有包含 C 的值3.2 将 * 添加在 C 的前面即可筛选所有最后一个字符包含 C 的值3.3 将 * 添加在 C 的后面即可筛选所有第一个字符包含 C 的值1. 原因 此前写筛选方式,都是高级筛选或者按条件筛选…

可移植操作系统接口--POSIX

什么是POSIX POSIX(Portable Operating System Interface,可移植操作系统接口)是一个标准,它定义了操作系统接口的一系列规范。POSIX标准最初由IEEE制定,现在由Open Group维护。 POSIX标准的主要目的是为了保证不同操…

python带你成功复刻热门手机游戏——飞翔的小鸟

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 飞翔的小鸟(游戏英文名:Flappy Bird) 一款由越南独立开发者开发的手机游戏,是之前非常流行的一款手机游戏 小游戏目标:让小鸟穿过管子,不要碰到任何物体…

大数据是什么?发展前景怎么样

关于大数据的解释,比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。简单来说,大数据就是结构化…

CAD崩溃后自动保存的文件在哪里?

CAD崩溃后自动保存的文件在哪里?相信这个问题很多设计师小伙伴在CAD绘图过程中都曾遇到过,这也是CAD常见问题之一。本节内容小编就以浩辰CAD软件为例来给大家介绍一下软件崩溃后CAD自动保存的文件在哪里以及打开方式。 CAD崩溃后自动保存文件位置&#…

GWAS全基因组关联分析工具GAPIT最新版的安装教程与报错解决方案

GWAS工具GAPIT最新版 本篇笔记主要内容是GWAS分析软件GAPIT最新版的安装和使用教程,包括常见的报错以及解决方案,主要出错位置在LDheatmap、stringi、nloptr、lme4等,测试安装的环境是东方天意的ECS云服务器(Linux centos7&#x…

七、延时队列

1、延时队列的概念 队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素希望在指定时间到了以后被取出处理 延时队列就是用来存放需要在指定时间被处理的元素的队列 2、延时队列使用的场景 订单在十分钟之内未支付则自动取消 …

SAP Cloud Platform会抛弃ABAP吗

很早之前自己写的文章,重新发布一下。 别担心,该来的总会来,该走的也留不住! - 剧情概要 - SAP Cloud Platform发布已经有一段时间了,自SAP云平台发布以来,很多人担心的一个问题是:在SAP云平…

【测试】HD-G2L-IO评估板测试结果表

1. 测试对象HD-G2L-IOT基于HD-G2L-CORE V2.0工业级核心板设计,双路千兆网口、双路CAN-bus、2路RS-232、2路RS-485、DSI、LCD、4G/5G、WiFi、CSI摄像头接口等,接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。H…

数据分析师常见问题(1)

1).sql三种排序的区别 2).几种连接方式 3).union和union all的区别 4) .drop和delete的区别 5).有关机器学习random forest 和xgboost的区别 6) .SVM原理 SVM是在特征空间上找到最佳的分离超平面,使得训练集上的正负样…

Win10使用ssh root用户登录centos7主机

1 、用SSH root用户登录Centos主机; 2 、检查centos是否装了epel库 执行命令 rpm -qa|grep epel 没有,需要安装 yum install epel-release 3 、安装xrdp yum install xrdp 4 、安装tigervnc-server yum install tigervnc-server 5 、为用户root…

如何通过SWTO分析法,加强项目风险管理?

1、什么是SWTO分析法 SWTO分析法是态势分析法,是根据企业自身的既定内在条件,对其优势、劣势、外部机会和危险进行分析,依照矩阵形式排列,将各种因素相互匹配分析的企业战略分析方法。 通过SWTO分析法 加强项目风险管理​ …

数学小课堂:数学和哲学的互动关系(自洽的哲学思想受益于数学思维)

文章目录 引言I 数学是“有底”的学问(止于公理)II 数学对哲学的影响2.1 哲学思想受益于数学思维2.2 笛卡尔的贡献2.3 莱布尼茨的哲学思想III 哲学对数学的影响引言 数学和科学各个分支之间在方法上却具有相通性和普适性,这些通用的方法常常让很多学科同时受益,依靠数学逻…

Maven 创建项目

在我们 maven 项目中的结构为 src/main/java —— 存放项目的.java 文件 src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件 src/test/java —— 存放所有单元测试ava 文件,如 JUnit 测试类 src/test/resources —— 测试资源文件…

跑步用入耳的好还是挂耳的、最好用的运动耳机分享

健身房经常会播放一些节奏较快的歌曲,这样能够激发大家在运动过程中的动力,所以运动时聆听音乐确实比较有效果,居家运动、室外跑步时选择运动耳机就变成了刚需,不过一款适合自己的运动耳机确实是比较难找的,首先不能影…

算法刷题总结 (四) 动态规划

算法总结4 动态规划一、动态规划1.1、基础问题11.1.1、509. 斐波那契数列1.1.2、70. 爬楼梯1.1.3、746. 使用最小花费爬楼梯1.2、基础问题21.2.1、62. 不同路径1.2.2、63. 不同路径Ⅱ1.2.3、343. 整数拆分1.2.4、96. 不同的二叉搜索树1.3、背包问题1.3.1、01背包1.3.1.1、单次选…

现代卷积神经网络之稠密连接网络(DenseNet),并对CFIAR10训练

专栏:神经网络复现目录 本章介绍的是现代神经网络的结构和复现,包括深度卷积神经网络(AlexNet),VGG,NiN,GoogleNet,残差网络(ResNet),稠密连接网络…

pikachu靶场CSRF之TOKEN绕过

简介 Pikachu靶场中的CSRF漏洞环节里面有一关CSRF TOKEN,这个关卡和其余关卡稍微有点不一样,因为表单里面存在一个刷新就会变化的token,那么这个token是否能绕过呢?接下来我们来仔细分析分析 实战过程 简单尝试 先利用任意一个…