[pytorch]设备选择以及卷积神经网络的应用

0.写在前面:

首先这篇文章还没写完,因为今天要尝试对我之前的一个框架做一个简单的更新迭代,所以目前先更新这么多.

1.关于设备的选择

首先,目前的大多数电脑都是自带一些GPU(图形计算单元,在这里被称之为cuda), 需要安装相关的驱动才能正常使用这些设备和调用他们的具体情况.

nvidia-smi

 但是平时对于我们个人来说,我们的电脑基本无法承担上百万的数据调用,所以一般情况下,服务器是可以提供给我们这些东西.

如图所示是服务器上的GPU情况,可以看到服务器的开发者实现了一些其他的探测功能.

(1)单独设备的选取

首先注意一个情况,对于单一设备来说,我们称呼CPU为'cpu',称呼GPU为'gpu'

而在代码中,设备时被抽象为一个对象,我们可以通过torch包下的device来指定某个设备:

torch.device('cpu')
torch.device('cuda') # 默认找到地0个GPU
torch.device('cuda:1') # 可以指定第一个GPU# 以上三个函数会返回对应的一个设备连接对象

 以上三个函数用来创建设备链接对象没通过这些设备可以获得具体的对象

当然在拿不准的时候,可以直接查询GPU的数目

torch.cuda.device_count()

 

2.关于卷积神经网络的简单应用情况

如何构建神经网络,其实在上一篇博客中已经说到了,这里就简单介绍几个神经网络层构建函数

(1)卷积层

卷积层实现的效果其实就是一个简单的乘法加和,原理如图所示

import torch.nn as nnnn.Con2d( input_channels, kernet_num ,kernel_size=?, padding=0, stride=1)

 注意一下参数中的第二个参数是我个人的理解,其实按照正常的普遍理解,这个应该叫"输出通道数目".

(2)平均池化层

(注意,大池化层的特点之一,都是不会改变频道的数目,也就是只会修改输入的尺寸,而不会修改输入的通道数目!!!!这个的pool东西,默认只有一层通道,也就是一个2d的核)

另外两个池化层需要输入的参数只有核的大小,以及步长

import torch.nn as nnnn.AvgPool2D(kernel_size=? stride=1)

(3)最大池化层

import torch.nn as nnnn.MaxPool2D(kernel_size=? stride=1)

3.如何讲模型和设备移动到指定设备上

首先我们在大多数情况下创建的张量和模型,都是默认在cpu上面的\

arr.device    # cpu
net.device    # cuda/gpu

 而在进行模型计算的时候,需要首先将模型和张量移动到统一设备上,这样计算很省时间

虽然但是,torch对于跨设备的数据和模型,提供了一些奇奇怪怪的手段来完成一个自动传递,但是真到了在训练的时候,临时传输不可避免地会造成大量的开销

使用to函数建立新链接即可

cuda1=torch.device('cuda:1')
X = torch.tensor([0,1,2,3])
Y = X.to(cuda1)X.device # cpu
Y.device # cuda1

而对于模型来说也是一样的的移动方式,使用to函数来实现

# 顺便这里补充一个with语句
with语句用来创建一个上下文, 比如打开文件(这里要加上as)
或者说给模型设置为训练模式当with语句中的函数块执行结束以后,就可以讲with对应的操作做一个取消
with net.train():..........
当内部函数块执行结束以后,模型就会撤掉"转变为训练模式"这个操作

 

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

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

相关文章

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用

Docker是一种基于容器的虚拟化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级容器中,然后在任何可用的开发、测试和生产环境中进行部署和运行。 下面是Docker的基本概念和优势: 容器:Docker容器是一种独立运行的软件包&a…

C#中.NET 6.0控制台应用通过EF访问已建数据库

目录 一、新建.NET 6.0控制台应用并建立数据库连接 二、下载并安装EF程序包 三、自动生成EF模型和上下文 1.Blog类模型 2.Post类模型 3.数据库上下文 四、设计自己的应用 VS2022的.NET6.0、.NET7.0框架下默认支持EF7(版本号7.0.13),除…

基于XML的声明式事务

场景模拟 参考基于注解的声明式事务 修改Spring的配置文件 将Spring配置文件中去掉tx:annotation-driven标签&#xff0c;并添加配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org…

Labview实现wav音乐播放

准备音频文件&#xff1a;将要播放的声音文件准备好&#xff0c;是.wav格式。 图形化如下&#xff1a; 内部逻辑如下&#xff1a;

如何在thingsboard的规则链中对一个遥测属性进行求平均值

背景 有这样一个需求,一个温度传感器每5秒,上传一次数据。要求算出该设备2分钟内的平均温度,如果超过某个值,则发送告警邮件。 具体操作实现 下面在规则链中实现求平均值。 使用的节点是 配置如下 必填 Timeseries keys,是要求的平均值的属性名。 我这里求的是四个…

VB.NET三层之用户查询窗体

目录 前言: 过程: UI层代码展示: BLL层代码展示: DAL层代码展示: 查询用户效果图:​ 总结: 前言: 想要对用户进行查询&#xff0c;需要用到控件DataGrideView&#xff0c;通过代码的形式将数据库表中的数据显示在DataGrideview控件中&#xff0c;不用对DatGridView控件…

jenkins分步式构建环境(agent)

rootjenkins:~# netstat -antp|grep 50000 tcp6 0 0 :::50000 ::&#x1f617; LISTEN 5139/java 1.52 安装Jenkins rootubuntu20:~# dpkg -i jenkins_2.414.3_all.deb 配置各种类型的Agent的关键之处在于启动Agent的方式 ◼ JNLP Agent对应着“通过Java Web启动代理”这种方…

Pass基础-DevOps

&#xff0c;DevOps是Dev&#xff08;开发&#xff09;和Ops&#xff08;运维/运营&#xff09;的结合&#xff0c;它将人、流程、工具、工程实践等等结合起来应用到IT价值流的实现过程中&#xff0c;是一系列原则、方法、流程、实践、工具的综合体。DevOps面向应用的全生命周期…

js编辑只取修改后的对象的属性和值

需求&#xff1a;在el-table的列表编辑操作后&#xff0c; 第一步&#xff1a;获取当前行数据&#xff0c;为对象&#xff1a;{}&#xff0c; 第二步&#xff1a;数据回填 第三步&#xff1a;编辑 第四步&#xff1a;请求后端接口 本文章操作就是在编辑完成后&#xff0c;只取编…

深度学习 YOLO 实现车牌识别算法 计算机竞赛

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…

springboot整合SSE技术开发经验总结及心得

springboot整合SSE技术开发经验总结及心得 一、开发背景二、快速了解SSE1、概念2、特性 三、开发思路四、代码演示1、引入依赖2、服务端代码3、后端定时任务代码 4、解决乱码的实体类4、前端代码 五、核心代码分析 一、开发背景 公司需要开发一个大屏界面&#xff0c;大屏页面…

027 - STM32学习笔记 - ADC初识(一)

026- STM32学习笔记 - ADC初识&#xff08;一&#xff09; 前几天不小心把板子掉地上了&#xff0c;液晶屏摔坏了&#xff0c;暂时先停一下液晶屏的学习&#xff0c;等新的板子来了再继续学习。 一、ADC介绍 ADC指的是Analog to Digital Converter&#xff08;模数转换器&…

【机器学习基础】机器学习入门(2)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a;【机器学习基础】机器学习入门&#xff08;1&#xff09; &#x1f4a1;…

VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据

本 示例使用设备介绍&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) Imports System.Threading Imports System.Net Imports System.Net.Sockets Public Class Form1Dim ListenSocket As SocketDim Dict As New Dictionary(Of…

【汇编】汇编语言的介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、汇编是什么&#xff1f;二、为什么要学习汇编语言&#xff1f;三、学习汇编语言的好处四、安装汇编环境4.1 下载虚拟环境4.2 配置虚拟环境 总结 前言 计算…

使用百度语音识别技术实现文字转语音的Java应用

探讨如何使用百度语音识别技术将文字转换为语音的Java应用。百度语音识别技术是一种强大的语音识别服务&#xff0c;可以将输入的文字转换为自然流畅的语音输出。我们将使用Java编程语言来实现这个应用&#xff0c;并提供相应的源代码。 首先&#xff0c;我们需要准备一些前提…

Cesium深入浅出之自定义材质

引子 做为一名技术宅却没有能拿得出手的技术无疑是最可悲的事情。三年前&#xff0c;当我第一次接触Cesium的时候就被它强大和炫丽所折服&#xff0c;最关键的是它还是开源的。以前我一直是机械地敲着业务代码&#xff0c;好像计算机程序就只能干这点事情一样&#xff0c;而 C…

Qt文档阅读笔记-Fetch More Example解析

Fetch More Example这个例子说明了如何在视图模型上添加记录。 这个例子由一个对话框组成&#xff0c;在Directory的输入框中&#xff0c;可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。 当有大量数据时&#xff0c;需要对视图模型进行批量增…

Git忽略文件.gitignore的使用

1.为什么使用? 当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去&#xff1f;比如项目的本地配置信息&#xff0c;如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突&#xff0c;所以这样的个性化配置文件我们一般不把它推送到git服务…