当前位置: 首页 > news >正文

5个实用提速深度学习模型的方法

您是否通过深度学习模型获得了良好的准确性,却发现推理时间不足以部署到生产环境中?您是否对如何优化模型的推理速度迷失了方向?那么这篇文章是给你的。众所周知,数据科学项目有一个奇特的特性,即项目者需要不断转换关注重点,根据业务或项目的不同需求。下面罗列了一些具体的关注点:

  • 数据集是如何获取的?是否是自己创建的数据集?(如果是自己的数据集,那么准确的标签是什么?任务中需要使用的样本需要多少?)

  • 如何将模型充分利用到实际项目中来?即使一个模型很好,但是如何将这个模型投入到实际项目中?

  • 你将使用什么模型?目前,学术界已经发表了很多具有价值的算法模型,而我们在研究中时,很多技术已经发生了改变。

  • 最重要的问题:这上述的一切是否可行,也就是按照目前的预算,是否可以用数据集训练出一个模型?并且这样的模型,是否能够满足我们应用场景的需要?

通常,在最后一个问题中,我们主要关注获得数据集的最佳预测准确性。这是最有意义的,因为它允许我们验证项目是否可行。反正,如果我们需要为模型投资更多数据以实现其目标,那么我们就需要权衡效率的问题。对于某些项目,缓慢的推理速度并不是一个破坏因素。但是,如果真的是这样的情况,那么具体会发生什么事情?

这种情况,可能发生在任何深度学习项目中,但在将涉及对象检测的项目部署到生产时通常会出现这种情况。当操作来自相机的图像时,每秒处理的每个帧都很重要。在硬件上投入更多资金绝对可以解决或缓解我们的问题。但是,如果我们打算将我们的产品作为解决方案(比如带有集成边缘 GPU 的摄像机)销售,这会线性增加产品的成本,直到我们无法从投资中获得回报。

针对许多实际情况,我们经历了上述的问题。这里,我们给出不同的方法清单,用来提高算法模型的推理速度。

1.改变模型的权重

从我们的经验来看,优化运行时模型的第一步是充分利用模型的架构。

1.1.1 训练后量化

将算法模型权重的精度,由浮点类型(32-bits)转换到整型(8-bits),将会降低模型的准确度。但是,从内存存储角度来看,这大大降低了存储消耗,反正提高了CPU和硬件加速器的延迟。

具体如何实现这个方法,主要取决于此算法模型所实现的框架。如果算法模型是用TensorFlow实现,那么很幸运,因为TensorFlow给出了模型量化的封装函数。如果算法模型使用PyTorch实现的,那么稍微有点困难。就在写本文的时候,PyTorch对于模型量化的支持,还局限于CPU端的支持。未来PyTorch对于模型量化的支持,将扩充到GPU端,就目前来看对于GPU端的模型量化支持还不够成熟。

当然,针对PyTorch实现的算法进行量化优化也不是没有任何方法,可以利用NVIDIA的TensorRT进行实现,但是为了能够在TensorRT运行时上运行PyTorch模型,模型权重需要先转化为中间模型权重格式。目前,可以实施的方法就是将PyTorch模型权重转换为ONNX模型格式,最终转化到TensorRT上进行运行。

1.1.2 实验举例

如果我们尝试量化一个用PyTorch框架实现的Faster R-CNN算法模型,但是不幸的是,这回产生很多问题。在论文上,所有这些过程都是有道理的,应该很容易做到。然而,在实践中,所有这些转换都可能出现问题。这主要是因为 PyTorch、ONNX 和 TensorRT 的发展会朝着多个方向发展,当一项功能被添加到一个功能中时,旧的集成不一定支持它。可能的问题如下:

  • 我们的模型可能能够在ONNX上运行,但是问题可能发生在将ONNX格式的模型转为TensorRT格式的过程中。尤其是,针对某些网络层,例如是PyTorch中的Resize层。

  • 在我们尝试进行这种转换时,我们碰巧使用PyTorch v1.3 或更高版本构建的模型可以转换并在ONNX Runtime 中运行,但无法通过 ONNX 优化器运行(这在转换网络是尤其重要的一步)。

请记住,这些问题可能会出现也可能不会出现,这取决于我们模型的架构,我们在转换简单的CNN网络时没有问题,但是对于我们正在使用的Faster R-CNN实现,这是另一回事。一些用户可以通过降级PyTorch设法解决了转换过程中的问题。但是,这限制了我们可以访问的ONNX的opset,这反过来也限制了我们可以使用哪个TensorRT 版本来运行您的引擎。希望所有这些问题都能在不久的将来得到解决……但考虑到所有这些框架的开发速度都很快,很可能总会有短暂的不兼容期。

训练后量化绝对是一个强大的工具,虽然有些PyTorch模型不能用这种方法量化,但你仍然应该试一试,考虑到将你的模型导出到ONNX后,可以很方便的使用命令行 trtexec 来转换模型。顺便说一下,它与Nvidia TensorRT docker容器中的 TensorRT 一起很容易获得。如果PyTorch量化失败,那么如果量化仍然是你想要的方法,我们建议你寻找TensorFlow实现。

1.2.1 将模型转换为半精度

与之前的方法类似,这种替代方法旨在权衡速度和内存效率的准确性。它提供了FP32和UInt8之间的中间点,其中:

  • 模型大小最多减少一半(而不是最多 75%)

  • 精度的下降小于 UInt8,这使得精度权衡更接近 FP32。

  • 大多数神经网络权重已经落入这个范围内,尽管进行这种转换有梯度下溢(小梯度值变为零)的风险,这会阻止网络正确学习任何东西。

考虑到如今 GPU 的架构已转向针对 FP16 操作进行优化,尤其是使用张量核心,这种方法为提高速度提供了很好的权衡。此外,事实证明,并非网络的所有层在推理过程中都花费大量时间。这意味着我们可以通过仅在需要速度提升的层(例如卷积)中使用半精度并将其余部分留在 FP32 中来找到更好的权衡。更好的是,在 FP32 中有一些层有助于防止梯度下溢。这种方法称为自动混合精度,它在量化方面的不同之处在于,不是对训练模型的权重进行后处理,而是应该从一开始就使用混合精度来训练模型。

1.2.2 实验举例

TensorFlow 通过为我们提供原生支持来实现这一目标,再次在很大程度上让我们的实际开发更轻松。而如果您使用PyTorch,NVIDIA Apex是你应该使用的工具,幸运的是,根据我们的经验,它比使用PyTorch 模型进行量化所带来的痛苦要少得多。集成 Apex 被宣传为仅在你的代码中添加三行。而实际上,还不止这些。你必须对其进行初始化,更改反向传递调用以使用 Apex 的缩放损失,并修改你保存和加载检查点的方式,实例如下:

from apex.fp16_utils import *
from apex import amp, optimizers
...
# Initialization
opt_level = 'O1'
model, optimizer = amp.initialize(model, optimizer, opt_level=opt_level)
# Train your model
...
with amp.scale_loss(loss, optimizer) as scaled_loss:
scaled_loss.backward()
...

结果也很不错。你获得多少加速将在很大程度上取决于你正在训练的模型。对于我们上面提出的Faster R-CNN模型实例来说,我们获得了超过30%的速度提升,而对我们的Faster R-CNN 模型的准确性没有任何影响。

2.寻找最优模型

我们试图从我们的模型中提取最后一个dropout以缩短推理时间。但也许这还不够。也许我们模型的架构对于我们试图解决的问题来说太大了。减小模型的大小也会降低我们的准确性吗?不必要!这不仅取决于我们希望模型解决的问题的具体性质。而且通过研究,不断提出和试验新的模型架构,通常会产生更纤薄的架构,通过设计实现更高的准确性!更好的是,如果我们实现了前面描述的任何方法,我们就可以重用该工作,并决定对我们的模型进行任何修改。

2.1 改变模型的backbone

在进行迁移学习时,我们可以查看模型的主干和对其进行预训练的数据集,仅作为我们在网格搜索中使用的超参数。我们不需要经过完全训练的模型来评估推理时间。这使我们可以对多个主干进行实验,并查看哪些可以更好地改善推理时间。我们应该期待我们的推理时间有相当大的改进,记住我们的模型仍然需要通过一个主干,虽然相当数量的推理时间发生在主干上,我们模型的外层仍然可以有对推理时间有很大影响。在研究了哪些主干提供了更好的时序之后,使用它的模型需要完全重新训练,以便我们分析主干对模型准确性的影响。

2.2 改变整个模型

数据科学家的日常工作不仅是从事数据科学项目,还要密切关注研究以及它如何影响当前的技术状态。尽管我们模型的主干是我们模型的一个重要组成部分,但我们只能通过尝试优化一些保持其他事物静态的东西来做这么多。如果毕竟方法推理时间仍然不符合你的喜好,那么是时候查看新开发的模型并验证这些模型所承诺的内容是否适用于你的实际用例。

2.3 实验举例

以物体检测问题为例,一些模型专门针对速度进行了优化,例如 YOLO,而同时其他模型提供了多种配置,这些配置随神经网络的深度和它们接收的输入的大小而变化,例如 EfficentDet,允许你训练和比较准确度与速度之间的权衡如何变化。更重要的是,令人惊叹的机器学习社区通常会提供这些模型的开源实现,供我们协作并帮助我们不要重新发明轮子!例如zylo117对EfficientDet 的 PyTorch 实现。

3.知识蒸馏

我们最后提出的改善模型推理时间的选项是通过知识蒸馏。假设我们有一个大模型(或模型的集合),它的预测精度很高,但其推理速度并不理想。Knowledge Distillation 建议通过使用我们的大模型作为训练器来训练一个具有较少参数的较小模型。这实质上是训练我们的小模型输出与我们的大模型或集成相同的预测。这样做的一个很大优势是我们不仅限于使用标记数据。

请注意,虽然我们的准确性可能会受到影响,但我们应该能够从中获得不错的速度提升。不幸的是,我们没有愉快地自己实施这种方法。但是知识蒸馏最近非常流行,并已用于对象分类、对象检测、声学模型和 NLP等。如果你想了解更多关于 知识蒸馏的信息,请查看Geoffrey Hinton等人的这篇论文。

4.总结

在本博客中,我们描述了五种方法来改善深度学习模型的推理时间。特别是,我们建议你按照我们列出的顺序实现它们,因为我们为实现模型量化和自动混合精度所做的任何编码对于我们对模型进行的任何进一步更改都具有重要价值。

我们希望这篇文章对你有价值,无论是通过为你当前面临的问题提供指导,还是在需要时用我们的知识武装你的项目!如果你有本博文中未涵盖的加速模型推理的方法,请告诉我们……对模型的推理速度优化有任何疑问吗?如果可以,我们很乐意在评论中回答这些问题。

5.参考链接

https://www.tensorflow.org/api docs/python/tf/quantization/quantize

https://pytorch.org/docs/stable/quantization.html

https://developer.nvidia.com/zh-cn/tensorrt

https://github.com/onnx/onnx

https://arxiv.org/abs/1506.01497

https://github.com/onnx/onnx-tensorrt/issues/302

https://github.com/NVIDIA/TensorRT/issues/284

https://github.com/onnx/onnx/issues/2417

https://ngc.nvidia.com/catalog/containers/nvidiatensorrt

https://developer.nvidia.com/blog/mixed-precision-training-deep-neural-networks/

https://github.com/NVIDIAapex

https://github.com/zylo117Yet-Another-EfficientDet-Pytorch

https://arxiv.org/pdf/1503.02531.pdf

作者:匡吉

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

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

(更新时间)2021年6月3日 商城高并发秒杀系统(.NET Core版) 24-性能优化-nginx负载均衡优化

一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模…...

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错? 我仔细一看:是用来爬取某个网站妹子图的代码,结果发现那个网站已经404了,当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习,但是我们的爬虫可能会对一些…...

CentOS8安装activeMQ

Active简介 ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。 它解决了下面的问题: 做到系统解耦,当新的模块接进来时&am…...

leetcode刷题笔记 322.零钱兑换【中等】

1、广度优先搜索 int coinChange(vector<int>& coins, int amount) {if (amount 0)return 0;int n coins.size();vector<int> flags(amount);queue<int> q;q.push(amount);int count 0;while (!q.empty()) {count;int s q.size();for (int i 0; i …...

[高维随机矩阵-2]

本系列主要按照《Introduction to random matrices theory and practice》进行&#xff0c;后续不再一一声明。每次使用新资料&#xff0c;都会在第一次使用时声明&#xff0c;后续也不再一一生明。 1. 本书目标读者是绝对的零基础人员。 2.随机矩阵理论random matirx theory…...

EasyExcel + Vue +Springboot 前后端联动,快捷导出Excel文件

预期效果&#xff1a;前后台联动&#xff0c;即点击“导出Excel”按钮后弹出下载框 导出效果&#xff1a; 1. 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version>…...

优质ip代理怎么使用?

目前&#xff0c;大家上网越来越依赖于代理IP&#xff0c;代理IP的应用范畴正在逐步扩展。对于因特网这个巨大的网站空间&#xff0c;大家一样期待着这其中的标准和实际中的一样&#xff0c;因此也期待着自己的个人信息能在互联网上得到最大的利益维护。但是事实上由于互联网是…...

windows下python3.5+安装scrapy与创建项目

scrapy框架的安装与创建项目 scrapy安装&#xff1a; 相信第一次安装scrapy框架都会遇到各种安装不上的问题&#xff01;哈哈&#xff0c;别问我为啥知道&#xff01; 那我分享下我是如何安装scrapy框架的。 首先安装scrapy框架之前需要先安装几个依赖的库 依照顺序分别是 z…...

docker搭建LDAP统一用户认证

1. 安装LDAP docker run -dit \ -p 389:389 \ -v /data/ldap/ldap:/var/lib/ldap \ -v /data/ldap/slapd.d:/etc/ldap/slapd.d \ --name ldap \ --env LDAP_TLSfalse \ --env LDAP_ORGANISATION"pibigstar" \ --env LDAP_DOMAIN"pibigstar.com" \ --env LD…...

python数据分析——如何用python连接远程数据库

本文将以SQLite、MySQL&#xff0c;PostgreSQL为例讲解python怎样连接远程数据库并执行相关数据库操作。 SQLite SQLite可能是与Python连接的最方便的数据库&#xff0c;因为我们不需要安装任何外部Python SQL模块即可使用。默认情况下&#xff0c;Python会自带一个名为sqlite…...

在 IntelliJ IDEA 中为自己设计的类库生成 JavaDoc

因为某个项目需要&#xff0c;为团队其他兄弟姐妹开发了一个 XML 分析处理器&#xff0c;并将其设计为一个类库&#xff0c;提供相应的 API 接口。为了方便大家的使用&#xff0c;需要生成对应的 JavaDoc 帮助文档&#xff0c;就像 JavaSE 标准库提供的 JavaDoc 那样。我的开发…...

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院送美诗特TA20无线话筒1套+自拍神器杆! DTS解码数字功放 HDMI、光纤、同轴多组输入输出 USB、蓝牙播放功能...

Windows系统发布Asp.Net core应用到IIS上

如何在windows系统上发布一个Asp.net core应用的网站&#xff1f;踩了不少坑&#xff0c;现在简单总结如下。 亲测有效的系统&#xff1a; windows 7 x64windows 10 x64windows server 2016 x64 具体步骤如下&#xff1a; 1.Net Core SDK安装 .Net Core SDK是一组库和工具…...

攻防世界XCTF-WEB入门全通关

为了更好的体验&#xff0c;请见我的---->个人博客 XCTF的web块入门区非常简单&#xff0c;适合一些刚解除安全或者对网络安全常识比较了解的同学在安全搞累之余娱乐娱乐。 其主要考察下面几点&#xff1a; 基本的PHP、Python、JS语法基本的代理BurpSuite使用基本的HTTP请…...

vue 路由懒加载

一、为什么要使用路由懒加载 为给客户更好的客户体验&#xff0c;首屏组件加载速度更快一些&#xff0c;解决白屏问题。 懒加载则可以将页面进行划分&#xff0c;需要的时候加载页面&#xff0c;可以有效的分担首页所承担的加载压力&#xff0c;减少首页加载用时。 二、定义…...

Hive表类型(存储格式)

转载专用&#xff1a;读到了好文章&#xff0c;用于分享收藏&#xff0c;侵权删。转发自大佬&#xff1a;桥路丶 &#xff0c;https://blog.csdn.net/qq_33876553版权声明&#xff1a;本文为CSDN博主「桥路丶」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载…...

Elasticsearch:使用 Debian 软件包安装 Elasticsearch

Elasticsearch 的 Debian 包可以从我们的网站或我们的 APT 仓库下载。 它可用于在任何基于 Debian 的系统上安装 Elasticsearch&#xff0c;例如 Debian 和 Ubuntu。 Elasticsearch 的最新稳定版本可以在下载 Elasticsearch 页面上找到。 其他版本可以在过去的版本页面上找到。…...

MATLAB基础语法之拟合算法

%data1.mat数据如下 %导入data1的数据 load data1%以x为自变量&#xff0c;y为因变量&#xff0c;o为点的形状作散点图 plot(x,y,o)% 给x和y轴加上标签 xlabel(x的值)ylabel(y的值)%返回data1数据行数n 19 n size(x,1); %最小二乘法求解拟合曲线参数 k (n*su…...

SpringBoot集成支付宝支付(沙箱环境)

项目结构&#xff1a; 项目依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boo…...

Golang高并发:生产者消费者模型

Golang高并发&#xff1a;生产者消费者模型 我们本篇博文主要通过几个例子来介绍生产者消费者模型。 案例1 下面看看第一个例子中的生产者协程。 //生产者协程go func() {for {product : strconv.Itoa(time.Now().Nanosecond())chanShop <- "商品" productf…...

易-----

易 本人00后&#xff0c;近期在学子平、八字命理、易经玄学方面&#xff0c;如也是玄学爱好者&#xff0c;可以加联系方式一起讨论、学习&#xff0c;年龄相仿更好。 微信&#xff1a;1783176946 事实上还有两种《易经》&#xff0c;一种叫《连山易》&#xff0c;一种叫《归藏…...

ssh爆破获取用户密码

通过nmap扫描目标主机发现ssh版本为OpenSSH 5.3&#xff0c;有漏洞 漏洞影响版本&#xff08;OpenSSH < 8.3p1&#xff09; 使用msfconsole 工具 search ssh #查找有关ssh的漏洞 找到并使用漏洞use auxiliary/scanner/ssh/ssh_login show options #查看此漏…...

从青铜到王者的路线,6年菜鸟开发面试字节跳动Android研发岗,移动架构师成长路线

前言 今天我给大家再次分享一下&#xff0c;我最近的一些读书的感想&#xff0c;思考起来&#xff0c;确实能够给自己带来一些真实的帮助和启发&#xff0c;希望大家在平时的工作学习中&#xff0c;也能够认清楚学习的一些本质。 如果我们的学习是在不断掌握应对具体工作场景…...

从入门到精通!一个三非渣本的Android校招秋招之路,终局之战

前言: 本文收集整理了各大厂常见面试题N道&#xff0c;你想要的这里都有内容涵盖&#xff1a;Java 相关、Android 基础、Android Framework、三方源码、算法与数据结构、等技术栈&#xff0c;希望大家都能找到适合自己的公司&#xff0c;开开心心的撸代码。 实现方案 直接依…...

CRM中销售周期的各个阶段以及销售管理

什么是销售周期? 销售周期是指销售人员为转化新客户而采取行动的所有时间阶段。销售周期经常与销售方法混淆。销售方法&#xff0c;通常为提高销售效率或成交率而设计&#xff0c;例如以客户为中心销售法。而销售周期则更具战略性&#xff0c;通常包括“挖掘”&#xff0c;“…...

Apollo学习笔记8-imu-lidarApollo3.0手动标定

imu-lidarApollo3.0手动标定参考文档参考文档 1:https://github.com/ApolloAuto/apollo/blob/r3.0.0/docs/specs/apollo_lidar_imu_calibration_guide.md. 2:https://github.com/ApolloAuto/apollo/blob/r3.0.0/docs/specs/D-kit/Auto_Driving–Sensor_calibration_cn.md. 3:h…...

SVN错误:Previous operation has not finished;run “cleanup“ if it was interrupted.

问题分析&#xff1a; SVN报错以上错误&#xff0c;可能是修改本地的文件之前没有update&#xff0c;导致commit的时候产生冲突&#xff0c;致使SVN崩溃&#xff0c;陷入clean up 死循环。 svn 的 operation是存放在 "work queue" 里的。而 "work queue"…...

git知识点查阅

若自己在自己的电脑上修改了某一代码&#xff0c;而此时远程分支上对应的代码别人也做了修改&#xff0c;现在需要把远程分支的代码和自己本地的代码合并到本地电脑&#xff0c;操作&#xff1a; git stash git pull git stash pop...

手写一个Vue Loading通过自定义api控制显示与关闭 记录

实现目标调用方法&#xff08;类似element的loading&#xff09;&#xff1a; this.$loading.show() 显示 this.$loading.hide()关闭 应用vue知识点&#xff1a;extend函数&#xff0c;use函数 简单分析&#xff0c;this.loading的实现通过use使用插件方式把loading的实现通…...

bootstrap table自定义新增行

.deleattrbtn,.addtrbtn{width: 60px;color: #fff;font-size: 12px;background-color: #3177E7;border-radius: 2px;border: 0; }#addtrdiv,#back_addtrdiv{margin: 10px 22px;text-align: right; }.table-bordered{table-layout: fixed;font-size: 12px; }.table th, .table...

JavaFX获取屏幕尺寸

1 AWT Dimension screenSize Toolkit.getDefaultToolkit().getScreenSize(); double width screenSize.getWidth(); double height screenSize.getHeight();2 JavaFX Rectangle2D screenRectangle Screen.getPrimary().getBounds(); double width screenRectangle.getW...

自托管书签管理器LinkAce

本文完成于 9 月下旬&#xff0c;当时的版本是 v1.10.4&#xff0c;发稿时最新版本为 v1.10.5 什么是 LinkAce &#xff1f; LinkAce 是一个自托管档案&#xff0c;用于收集您喜爱的网站的链接&#xff0c;并保存文章以供日后阅读。LinkAce 提供了一个长期存档来存储指向网站、…...

响应式开发设备屏幕尺寸划分

响应式开发设备屏幕尺寸划分 1、设备划分 设备划分尺寸区间宽度设置超小屏幕&#xff08;手机&#xff09;< 768px100%小屏设备&#xff08;平板&#xff09;> 768px ~ 992px750px中等屏幕&#xff08;桌面显示器&#xff09;> 992px ~ < 1200px970px宽屏设备&am…...

获取屏幕尺寸

//引用包 var Dimensions require(Dimensions); class DimensionsDemo extends Component {render() {return(<View style {dimentsionsStyle.dimensionStyle}>{/*通过一个key*/}<Text>当前屏幕宽度:{Dimensions.get(window).width}</Text><Text>当前…...

iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?

iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸&#xff1f; iOS开发如何标准化的适应新的iPhone 5s/iPhone6/6 Plus&#xff0c;是否有一种一劳永逸的解决方法&#xff1f;而不需要设计师针对不同的尺寸单独进行设计&#xff1f;1 条评论 分享查看全部 3 个回…...

电脑屏幕尺寸

像素,大小 18.5英寸/1366*76819英寸/1440*90020英寸/1600*90021.5英寸/1920*108022英寸/1680*105023英寸/1920*108024英寸/1920*108027英寸/1920*108027英寸/2560*1440 PC端 按屏幕宽度大小排序&#xff08;主流的用橙色标明&#xff09;分辨率 比例 | 设备尺寸1024*500 &#…...

链表之反转链表

文章目录链表之反转链表题目描述解题思路代码实现链表之反转链表 力扣链接 题目描述 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例&#xff1a; ​ 输入: 1->2->3->4->5->NULL ​ 输出: 5->4-&…...

Python实现简单的密码设计(基于古典密码)

想了一下&#xff0c;还是发出来吧。这是我们这学期的第一次密码学作业&#xff0c;要求用古典密码组合出一个加密算法&#xff0c;如果这对你来说也是作业&#xff0c;请记得修改。 # 置换密码加密 def shift_encrypt(m, key):l len(key)c ""for i in range(0, l…...

guns常用功能整理

guns常用功能整理guns常用功能整理一、ajax接口请求&#xff08;常用&#xff09;1.1&#xff1a;引入插件库1.2&#xff1a;调用即可二、es6模块调用2.1&#xff1a;当前文件下使用2.2&#xff1a;封装的代码暴露出去三、创建template模板3.1:html节点创建模板3.2&#xff1a;…...

电脑的WiFi里面不显示可用的无线网络

首先&#xff0c;右击网络图标&#xff0c;打开网络和Internet设置&#xff0c;更改适配器选项&#xff0c;选择WLAN&#xff0c;右击启用。 2. 右击我的电脑&#xff0c;管理&#xff0c;服务和应用程序中双击服务&#xff0c;找到WLAN autoconfig&#xff0c;右击选择启动。 …...

计算机网络的有线接入,台式电脑怎么连接有线网络

台式机通过无线2113路由器上网&#xff0c;可5261以使用两个办法&#xff1a;4102一、有线连接&#xff0c;按以下操作步骤进行&#xff1a;1、这个方1653法比较省事&#xff0c;直接从路由器的LAN口(一般为四个颜色一样的口)接出来一根网线&#xff0c;直接插到台式电脑上&…...

影响工业产品设计的主要因素

设计师对工业产品的产品外观设计主要依靠形状、图案和颜色的结合&#xff0c;创造出具有一定功能性质的新产品。在这个过程中&#xff0c;设计师需要充分利用各种因素&#xff0c;外观工业设计公司强调材料的机制和颜色。那么&#xff0c;影响产品设计的主要因素是什么呢? 一、…...

JAVA -- 下载配置JDK1.8

操作&#xff1a; 官网下载JDK1.8 网址&#xff1a;Java SE Development Kit 8 - Downloads 找到 Java SE Development Kit 8u301 &#xff0c;下面是jdk的下载列表 拖到最下面&#xff0c;看到有个window 64位的jdk 点击下载 安装IDK 打开安装包&#xff0c;下载JDK1.8 可更…...

IDk-BDF for subdiffusion with a singular source term

...

VS2013 IDK 连接失败:数据库连接失败,请检查客户端安装配置是否有问题

连接配置的是oracle数据库。 原因&#xff1a;vs会自动搜索安装目录下 oracle文件夹。 而我的oracle安装文件夹名不是oracle。vs应该是解析不了。 解决方法&#xff1a; 将vs等安装到D盘&#xff0c;oracle安装到D盘。 设置环境变量&#xff1a;ORACLE_HOME: D:\ORACLE\ORA90 …...

Java中finalize方法的使用(经典白学,新idk已经弃用)

在jdk文档中&#xff0c;其解释为当垃圾回收器确定不存在对该对象的更多的引用时&#xff0c;由对象的垃圾回收器调用此方法。 什么情况下会被回收&#xff1a;某个对象没有任何引用时&#xff0c;则jvm就认为这个对象是一个垃圾对象&#xff0c;用垃圾回收机制调用finalize方…...

linux系统安装内存测试,一种Linux系统下基于IDK内存注错的测试方法及系统与流程...

本发明涉及计算机服务器的技术领域&#xff1a;&#xff1a;&#xff0c;具体涉及到一种Linux系统下基于IDK内存注错的测试方法及系统。背景技术&#xff1a;&#xff1a;&#xff1a;在服务器领域中&#xff0c;内存是服务器中重要的部件之一&#xff0c;它是与CPU进行沟通的桥…...

TL437x-IDK基于AM437x的FPGA与ARM通信测试

FPGA与ARM基于I2C通信测试表 1 开发板型号 是否支持本实验 TL437x-EVM 不支持 TL437x-EasyEVM 不支持 TL437x-IDK 不支持 TL437xF-EVM 支持 本测试程序将FPGA模拟成I2C设备&#xff0c;设备地址为0x2A&#xff0c;ARM使用I2C0总线对此I2C设备进行读写。 进入开发板文…...

XM6748F-IDK TMS320C6748+FPGA高速数据采集处理平台

支持32路AD采集&#xff0c;32路DA输出。 支持多路RS485、RS232串口&#xff1b; 支持实时系统&#xff0c;控制延时&#xff1b; 支持DSP和ARM的多核通信&#xff0c;提供丰富的采样demo&#xff1b; 支持图形界面编程&#xff0c;触控&#xff01; 1.C6748FPGA开发板简介…...

XM5728_IDK_V3 基于AM5728 iperf千兆网络速率测试指南

本测试基于信迈科技TI AM5728评估板XM5728_IDK_V3进行。 基于Iperf网速测试指南 Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具&#xff0c;能够提供网络吞吐率信息&#xff0c;以及震 动、丢包率、最大段和最大传输单元大小等统计信息。 以下使用 iperf 工具测试开发板与 …...