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

【NLP251】NLP RNN 系列网络

NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习

1.原理及网络结构

1.1RNN 

在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型,当n<1时,就会出现“梯度消失"问题,而当η> 1时,“梯度爆炸”也就产生了。

1.2 双向-RNN

两个方向RNN的区别在于输入数据的不同,反向RNN数据是对正向RNN数据的反转

1.3深度双向-RNN

 

1.4LSTM

LSTM(长短期记忆网络)相较于RNN(循环神经网络)的主要优势如下:

1. 解决长期依赖问题

  • RNN在处理长序列数据时,容易出现梯度消失或梯度爆炸的问题,导致难以捕捉到序列中相隔较远的依赖关系。

  • LSTM通过引入“记忆单元”(Cell State)和门控机制(遗忘门、输入门、输出门),能够有效地学习和保持长期依赖关系。遗忘门可以有选择性地丢弃不再重要的信息,输入门可以添加新的重要信息,输出门则控制信息的输出,从而确保信息在长序列中能够稳定传递。

2. 缓解梯度消失问题

  • RNN在反向传播时,梯度可能会随着序列长度增加而迅速衰减或增大,导致训练困难。

  • LSTM通过门控机制,使得梯度可以直接通过记忆单元流动,减少了梯度在传播过程中的衰减,从而缓解了梯度消失问题。

LSTM 的关键在于其所特有的“细胞状态”,这一状态犹如一条贯穿始终的传送带。它在整个链条上顺畅运行 ,只有一些少量的线性交互。信息在 上面流传保持不变很容易。

LSTM怎么控制“细胞状态”? 

LSTM(长短期记忆网络)借助所谓的“门”结构,能够有选择地去除或增加“细胞状态”中存储的信息。这一过程包含一个sigmoid神经网络层以及一个逐元素的乘法操作。sigmoid层生成一个介于0到1之间的概率值,决定每个成分可以通过的量,其中0代表“完全阻止”,而1则表示“完全允许”。在LSTM中,存在三个主要的“门”结构,共同调控“细胞状态”的更新机制。

第一个“门”——“忘记门”或“遗忘门”, 决定从过去的“细胞状态”中 丢弃什么信息;比如在语言模型中,细胞状态可能包含了性别信息(“他” 或者“她”),当我们看到新的代名词的时候,可以考虑忘记旧的数据。
第二个“门”,即“信息 增加门”,负责决定哪些新信息可以添加到“细胞状态”中。 Sigmoid层决定什么值需要更新; Tanh层创建一个新的候选向量Ct; 主要是为了状态更新做准备

 

经过第一个和第二个“门”后,可以确定传递信息的删除和增加,进而执行“细胞状态”的更新操作。具体来说,首先将Ct-1更新为Ct,接着把旧状态与ft相乘,从而剔除那些确凿无误无需保留的信息。随后,加入新的候选值it *Ct,最终获得更新后的“细胞状态”。

 

第三个“门”即“输出门”,它基于“细胞状态”生成输出。首先,通过sigmoid层来决定细胞状态的哪一部分会被用于输出。然后,利用tanh函数处理细胞状态,得到一个介于-1到1之间的数值。最后,将这个数值与sigmoid门的输出相乘,从而确定最终输出的内容。

 

LSTM变种

 变种1 增加“peephole connections”层 ,让门层也接受细胞状态的输入

变种2 通过耦合忘记门和更新输入门(第一个和第二个门);也就是不再单独的考虑忘记什么、 增加什么信息,而是一起进行考虑

 

1.5GRU 

Gated Recurrent Unit (GRU) 是在2014年被提出的,它将LSTM中的忘记门和输出门合并为一个单一的更新门,同时还将数据单元状态和隐藏状态(即细胞状态和输出状态)进行了合并。这种结构相较于LSTM更为简单。

总结:RNN与GRU细胞状态信息与输出信息相同,而GRU细胞状态信息可能与输出信息不同 。

 2.API接口实现

2.1RNN API调用讲解

RNN返回值为两部分,第一部分是蓝框所示所有时刻 最后一个隐藏层的输出特征向量;

第二分是红色圈所示最后时刻 所有一个隐藏层的输出特征向量;

我们可以通过rnn.named_parameters()来查看详细的中间过程状态shape

rnn = nn.RNN(4, 8, num_layers=2, batch_first=True, bidirectional=True)
for name, param in rnn.named_parameters():print(name, param.shape)

  

RNN无法保持长时依赖(代码验证):

 2.2 LSTM API调用讲解 

 

 从网络结构图和代码中不难发现LSTM中ht与output输出相同 

 中间过程中的32从何而来?

weight_ih_l0 torch.Size([32, 4])
weight_hh_l0 torch.Size([32, 8])
bias_ih_l0 torch.Size([32])
bias_hh_l0 torch.Size([32])

附LSTM代码:

lstm = nn.LSTM(input_size=4,  # 每个样本每个时刻输入的向量维度大小hidden_size=16,  # 每个样本每个时刻输出的向量维度大小num_layers=1,  # RNN的层数,默认为1bias=True,  # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True,  # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0,  # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False,  # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为Falseproj_size=0  # 是否针对每个时刻输出的hi进行一个线性转换,0表示不进行转换;>0的值表示会将hi映射(全连接)为proj_size大小的向量
)x = torch.randn(2, 3, 4)  # 2个样本,每个样本3个token,每个token对应的向量维度大小为4
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# ? = hidden_size * (2 if bidirectional else 1) if proj_size <=0 else proj_size
# ct: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, (ht, ct) = lstm(x)
print(type(output), output.shape)
print(type(ht), ht.shape)
print(type(ct), ct.shape)print(output[:, -1, :])
print(ht)
print(ct)rnn = nn.LSTM(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)

2.3 GRU API调用讲解 

lstm = nn.GRU(input_size=4,  # 每个样本每个时刻输入的向量维度大小hidden_size=16,  # 每个样本每个时刻输出的向量维度大小num_layers=1,  # RNN的层数,默认为1bias=True,  # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True,  # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0,  # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False  # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为False
)# 2个样本,每个样本3个token,每个token对应的向量维度大小为4
x = torch.randn(2, 3, 4)
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# **** ? = hidden_size * (2 if bidirectional else 1)
# : 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ct/ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, ct = lstm(x)
print(type(output), output.shape)
print(type(ct), ct.shape)rnn = nn.GRU(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)

相关文章:

【NLP251】NLP RNN 系列网络

NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 &#xff11;.原理及网络结构 &#xff11;.&#xff11;&#xff32;&#xff2e;&#xff2e; 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…...

数据分析系列--④RapidMiner进行关联分析(案例)

一、核心概念 1.1项集&#xff08;Itemset&#xff09; 1.2规则&#xff08;Rule&#xff09; 1.3支持度&#xff08;Support&#xff09; 1.3.1 支持度的定义 1.3.2 支持度的意义 1.3.3 支持度的应用 1.3.4 支持度的示例 1.3.5 支持度的调整 1.3.6 支持度与其他指标的…...

深度学习:基于MindNLP的RAG应用开发

什么是RAG&#xff1f; RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09; 是一种结合检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的技术&#xff0c;旨在提升大语言模型&#xff08;LLM&#xff09;生…...

Hive安装教程

Hive安装教程 文章目录 Hive安装教程写在前面安装下载安装部署安装Hive启动并使用Hive MySQL安装检查当前系统是否安装过MySQL安装初始化数据库 Hive元数据配置到MySQL拷贝驱动配置Metastore到MySQL再次启动Hive 写在前面 Linux版本&#xff1a;CentOS7.5Hive版本&#xff1a;…...

安卓逆向之脱壳-认识一下动态加载 双亲委派(二)

一&#xff1a;动态加载与双亲委派模型 在 Java 和 Android 中&#xff0c;ClassLoader 是一个非常重要的组件&#xff0c;负责将 .class 文件或 .dex 文件的字节码加载到内存中&#xff0c;供程序使用。在这其中&#xff0c;有两种关键的概念需要深入理解&#xff1a;动态加载…...

全程Kali linux---CTFshow misc入门(14-24)

第十四题&#xff1a; dd命令&#xff1a;dd是一个用于复制和转换数据的命令&#xff0c;它可以对文件、设备等进行操作&#xff0c;在数据备份、转换格式等场景经常使用。 ifmisc14.jpg&#xff1a;if表示 “input file”&#xff08;输入文件&#xff09;&#xff0c;这里指…...

学习数据结构(3)顺序表

1.动态顺序表的实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09;扩容 &#xff08;3&#xff09;头部插入 &#xff08;4&#xff09;尾部插入 &#xff08;5&#xff09;头部删除 &#xff08;这里注意要保证有效数据个数不为0&#xff09; &#xff08;6&a…...

知识体系、知识管理角度的赚钱思考

从知识管理和知识体系的角度出发&#xff0c;赚钱的问题思考清单可以帮助你系统地梳理和优化自己在财富创造方面的策略。 以下是一个详细的清单&#xff0c;涵盖从知识获取、技能提升到实际应用的各个环节&#xff0c;帮助你在赚钱的道路上更加高效和有条理。 一、赚钱的目标与…...

(done) ABI 相关知识补充:内核线程切换、用户线程切换、用户内核切换需要保存哪些寄存器?

由于操作系统和编译器约定了 ABI&#xff0c;如下&#xff1a; 编译器在对 C 语言编译时&#xff0c;会自动 caller 标注的寄存器进行保存恢复。保存的步骤通常发生在进入函数的时候&#xff0c;恢复的步骤通常发生在从函数返回的时候。 内核线程切换需要保存的寄存器&#…...

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境&#xff1a;QT6、OPENCV3.9的sources文件 OPENCV下载网页&#xff1a;https://opencv.org/releases/ QT6下载教程&#xff1a;https://blog.csdn.net/caoshangpa/article…...

Linux 常用命令——系统设置篇(保姆级说明)

系统设置类 显示当前运行的进程&#xff08;ps&#xff09; ps [options] [--help]# 查找指定进程格式&#xff1a; ps -ef | grep 进程关键字# 显示进程信息 ps -A 参数&#xff1a; -A 列出所有的进程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包…...

完美世界前端面试题及参考答案

如何设置事件捕获和事件冒泡? 在 JavaScript 中,可以通过addEventListener方法来设置事件捕获和事件冒泡。该方法接收三个参数,第一个参数是事件类型,如click、mousedown等;第二个参数是事件处理函数;第三个参数是一个布尔值,用于指定是否使用事件捕获机制。当这个布尔值…...

Vue3笔记——(三)hooks、路由

015 hooks 作用&#xff1a;使得代码更加模块化和可维护 Person.vue <template><div><h2>当前求和{{ sum }}</h2><button click"addFn">点我sum1</button></div> </template> <script setup lang"ts"…...

网络安全大模型和人工智能场景及应用理解

本文通过通俗易懂的方式的进行阐述&#xff0c;大家读完觉得有帮助记得及时关注和点赞&#xff01;&#xff01;&#xff01; 一、网络安全大模型的概述 网络安全大模型是一种用于识别和应对各种网络安全威胁的模型。它通过分析网络数据包、网络行为等信息&#xff0c;识别潜在…...

python-leetcode-从中序与后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…...

NLP模型大对比:Transformer > RNN > n-gram

结论 Transformer 大于 RNN 大于 传统的n-gram n-gram VS Transformer 我们可以用一个 图书馆查询 的类比来解释它们的差异&#xff1a; 一、核心差异对比 维度n-gram 模型Transformer工作方式固定窗口的"近视观察员"全局关联的"侦探"依赖距离只能看前…...

MySQL查询优化(三):深度解读 MySQL客户端和服务端协议

如果需要从 MySQL 服务端获得很高的性能&#xff0c;最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些&#xff0c;大部分的查询优化是有据可循的&#xff0c;从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程&#xff1a; 客户端…...

[STM32 - 野火] - - - 固件库学习笔记 - - -十三.高级定时器

一、高级定时器简介 高级定时器的简介在前面一章已经介绍过&#xff0c;可以点击下面链接了解&#xff0c;在这里进行一些补充。 [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器 1.1 功能简介 1、高级定时器可以向上/向下/两边计数&#xff0c;还独有一个重复计…...

Antd React Form使用Radio嵌套多个Select和Input的处理

使用Antd React Form使用Radio会遇到嵌套多个Select和Input的处理&#xff0c;需要多层嵌套和处理默认事件和冒泡&#xff0c;具体实现过程直接上代码。 实现效果布局如下图 代码 <Formname"basic"form{form}labelWrap{...formItemLayoutSpan(5, 19)}onFinish{on…...

固有频率与模态分析

目录 引言 1. 固有频率&#xff1a;物体的“天生节奏” 1.1 定义 1.2 关键特点 1.3 实际意义 2. 有限元中的模态分析&#xff1a;给结构“体检振动” 2.1 模态分析的意义 2.2 实际案例 2.2.1 桥梁模态分析 2.2.2 飞机机翼模态分析 2.2.3 具体事例 3. 模态分析的工具…...

视频多模态模型——视频版ViT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》&#xff0c;2021由google 提出用于视频处理的视觉 Transformer 模型&#xff0c;在视频多模态领域有…...

2859.计算K置位下标对应元素的和

示例 1&#xff1a;输入&#xff1a;nums [5,10,1,5,2], k 1 输出&#xff1a;13 解释&#xff1a;下标的二进制表示是&#xff1a; 0 0002 1 0012 2 0102 3 0112 4 1002 下标 1、2 和 4 在其二进制表示中都存在 k 1 个置位。 因此&#xff0c;答案为 nums[1] nums[…...

Redis 教程

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 它通常被称为数据结构服务器&…...

2024 CVPR Highlight Learning-Feedback

图像增强 Towards Robust Event-guided Low-Light Image Enhancement: A Large-Scale Real-World Event-Image Dataset and Novel Approach 解决的主要问题是低光照条件下的图像增强 通过多尺度整体融合分支提取事件和图像的结构和纹理信息&#xff0c;并引入信噪比&#xff0…...

maven、npm、pip、yum官方镜像修改文档

文章目录 Maven阿里云网易华为腾讯云 Npm淘宝腾讯云 pip清华源阿里中科大华科 Yum 由于各博客繁杂&#xff0c;本文旨在记录各常见镜像官网&#xff0c;及其配置文档。常用镜像及配置可评论后加入 Maven 阿里云 官方文档 setting.xml <mirror><id>aliyunmaven&l…...

UE求职Demo开发日志#15 思路与任务梳理、找需要的资源

1 思路梳理 因为有点无从下手&#xff0c;就梳理下最终形态. 基地的建设我是想单独一个场景&#xff0c;同一个关卡中小怪会每次来都会刷&#xff0c;小解密一次性的&#xff0c;关键的Boss和精英怪不会重复刷&#xff0c;同时场景里放一些资源可收集&#xff0c;基地建设锁定区…...

设置jmeter外观颜色

设置jmeter外观颜色 方法&#xff1a; 步骤一、点击顶部选项 ->外观&#xff0c;这里提供了不同的主题&#xff0c;可选自己喜欢的风格。 步骤二、选择后&#xff0c;弹框提示点击Yes。...

《一文读懂!Q-learning状态-动作值函数的直观理解》

在人工智能的强化学习领域&#xff0c;Q-learning算法是一颗耀眼的明星&#xff0c;被广泛应用于机器人控制、游戏AI开发、自动驾驶等诸多前沿领域。而想要真正掌握Q-learning算法&#xff0c;理解其核心概念——状态 - 动作值函数&#xff0c;是绕不开的关键一步。这篇文章就带…...

Angular 2 表单深度解析

Angular 2 表单深度解析 引言 Angular 2作为现代前端开发的框架之一,以其灵活性和强大的功能赢得了众多开发者的青睐。在Angular 2中,表单处理是其中一个重要且复杂的部分。本文将深入解析Angular 2的表单,从基础知识到高级应用,旨在帮助开发者更好地理解和运用Angular 2…...

使用kitty terminal遇到的‘xterm-kitty‘: unknown terminal type.

解决办法 方式一 export TERMxterm-256color使永久生效 echo export TERMxterm-256color >> ~/.zshrc # 如果用 zsh&#xff0c;如果使用的是bash就修改为bashrc source ~/.zshrc #同理如果是ssh下遇到该问题&#xff0c;参考 https://sw.kovidgoyal.net/kitty/faq/…...

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好&#xff0c;今天是Dest1ny漏洞库的专题&#xff01;&#xff01; 会时不时发送新的漏洞资讯&#xff01;&#xff01; 大家多多关注&#xff0c;多多点赞&#xff01;&#xff01;&#xff01; 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚…...

代码随想录|动态规划 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

300.最长递增子序列 题目 参考文章 思路&#xff1a;dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 因为没有连续&#xff0c;所以每一个元素都要比较&#xff0c;从而得到结果 两个递增子序列一定分别以nums[j]为结尾 和 nums[i]为结尾&#xff0c; 要不然这个比…...

Flutter_学习记录_导航和其他

Flutter 的导航页面跳转&#xff0c;是通过组件Navigator 和 组件MaterialPageRoute来实现的&#xff0c;Navigator提供了很多个方法&#xff0c;但是目前&#xff0c;我只记录我学习过程中接触到的方法&#xff1a; Navigator.push(), 跳转下一个页面Navigator.pop(), 返回上一…...

【信息系统项目管理师-选择真题】2006下半年综合知识答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...

面向对象编程简史

注&#xff1a;本文为 “面向对象编程简史” 相关文章合辑。 英文引文&#xff0c;机翻未校。 Brief history of Object-Oriented Programming 面向对象编程简史 Tue, May 14, 2024 Throughout its history, object-oriented programming (OOP) has undergone significant …...

快速提升网站收录:内容创作的艺术

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/15.html 快速提升网站收录&#xff0c;内容创作是关键。以下是一些关于内容创作以提升网站收录的艺术性建议&#xff1a; 一、关键词研究与优化 选择长尾关键词&#xff1a;进行深入的关键…...

高速PCB设计指南3——PCB 传输线和受控阻抗

高速PCB设计指南3——PCB 传输线和受控阻抗 1. 传输线1.1 传输线的定义1.2 传输线的分类1.3 互为传输线的情况 2. 均匀传输线的特性阻抗3. PCB中受控阻抗结构3.1 微带线&#xff08;Microstrip&#xff09;3.2 带状线&#xff08;Stripline&#xff09; 4 阻抗控制方法5. 阻抗控…...

python实现一个完整的智能教室能耗监测与管理系统的实现方案

以下是一个完整的智能教室能耗监测与管理系统的实现方案&#xff0c;主要使用Python语言&#xff0c;涵盖深度学习模型研发、教室场景适应性分析、系统架构设计、前端展示、后端服务以及测试评估等方面。 1. 数据准备 首先&#xff0c;需要收集教室的照片数据集&#xff0c;并…...

【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测

&#x1f525;【新春特辑】2025年春节技术展望&#xff1a;蛇年里的科技创新与趋势预测 &#x1f4c5; 发布日期&#xff1a;2025年01月29日&#xff08;大年初一&#xff09; 在这个辞旧迎新的美好时刻&#xff0c;我们迎来了充满希望的2025年&#xff0c;也是十二生肖中的蛇…...

woocommerce独立站与wordpress独立站的最大区别是什么

WooCommerce独立站与WordPress独立站的最大区别在于它们的功能定位和使用场景。 WordPress是一个开源的内容管理系统(CMS)&#xff0c;最初是作为博客平台发展起来的&#xff0c;但现在已经演变为一个功能丰富的网站构建工具。它主要用于创建动态网站&#xff0c;提供广泛的定…...

docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜…...

PTA乙级1006~1010【c++】

1006 换个格式输出整数 #include <iostream> using namespace std;int main(){int n;cin >> n;int b n / 100;int s n / 10 % 10;int g n % 10;for (int i 0; i < b; i ) cout << B;for (int i 0; i < s; i ) cout << S;for (int i 0; …...

一文掌握ADB的安装及使用

文章目录 一、什么是ADB&#xff1f;二、 安装ADB2.1 下载ADB2.2 配置环境变量 三、连接Android设备四、 常用ADB命令五、ADB高级功能5.1 屏幕截图和录制5.2 模拟按键输入5.3 文件管理5.4 系统设置管理5.5 系统操作指令5.6 日志操作指令5.7 APK操作指令5.8 设备重启和恢复 六、…...

ThinkPad E480安装Ubuntu 18.04无线网卡驱动

个人博客地址&#xff1a;ThinkPad E480安装Ubuntu 18.04无线网卡驱动 | 一张假钞的真实世界 遗憾的是虽然下面的方法可以解决&#xff0c;但是内核升级后需要重新安装。 基本信息 Ubuntu 18.04ThinkPad E480使用下面的命令查看 Linux 内核&#xff1a; $ uname -r 5.0.0-3…...

QT+mysql+python 效果:

# This Python file uses the following encoding: utf-8 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QMessageBox from PySide6.QtGui import QStandardItemModel, QStandardItem # 导入需要的类# Important: # 你需要通过以下指令把 form.ui转为ui…...

关于 SR-IOV 架构论文的总结文章

关于 SR-IOV 架构论文的总结文章 在计算机虚拟化技术不断发展的进程中,SR - IOV 架构凭借其在提升 I/O 性能、优化资源利用等方面的优势,成为众多研究关注的焦点。通过对 4 篇相关论文的研读,我们可以从多个维度深入了解 SR - IOV 架构的核心要点。 一、SR - IOV 架构的原…...

MyBatis最佳实践:提升数据库交互效率的秘密武器

第一章&#xff1a;框架的概述&#xff1a; MyBatis 框架的概述&#xff1a; MyBatis 是一个优秀的基于 Java 的持久框架&#xff0c;内部对 JDBC 做了封装&#xff0c;使开发者只需要关注 SQL 语句&#xff0c;而不关注 JDBC 的代码&#xff0c;使开发变得更加的简单MyBatis 通…...

cursor ide配置远程ssh qt c++开发环境过程记录

cursor是啥就不介绍了&#xff0c;好像是目前最好用的ai ide&#xff0c;下面主要是配置远程ssh连接linux机器进行qt5 c程序运行的配置过程记录。 一、c_cpp_properties.json 在项目根目录的.vscode目录里面新建c_cpp_properties.json文件&#xff0c;根据你的实际情况配置该文…...

萌新学 Python 之数值处理函数 round 四舍五入、abs 绝对值、pow 幂次方、divmod 元组商和余数

关于数值处理的常用函数&#xff1a;round、abs、pow、divmod 1. round(数值[,小数位]) 四舍五入 说明&#xff1a;对数值进行四舍五入&#xff0c;小数位可以没有&#xff0c;也可以是负数&#xff08;从小数点左边开始进行&#xff09; round(数值[,小数位]) 四舍五入 #…...

vim交换文件的作用

1.数据恢复&#xff1a;因为vim异常的退出&#xff0c;使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑&#xff1a;vim检测到交换文件的存在,会给出提示&#xff0c;以避免一个文件同时被多人编辑。 &#xff08;vim交换文件的工作原理&#xff1a;vim交换文件的工作…...