PyTorch循环神经网络(Pytotch)
文章目录
- 循环神经网络(RNN)
- 简单的循环神经网络
- 长短期记忆网络(LSTM)
- 门控循环单元(GRU)
循环神经网络(RNN)
- 循环神经网络(RecurrentNeuralNetwork,RNN)又称递归神经网络,它是常规前馈神经网络(FeedforwardNeuralNetwork,FNN)的扩展,本节介绍几种常见的循环神经网络。
简单的循环神经网络
- 循环神经网络(RNN)会遍历所有序列的元素,每个当前层的输出都与前面层的输出有关,会将前面层的状态信息保留下来。理论上,RNN应该可以处理任意长度的序列数据,但为了降低一定的复杂度,实践中通常只会选取与前面的几个状态有关的信息。
- 简单的循环神经网络如图:
- x是输入,y是输出,中间由一个箭头表示数据循环更新的是隐藏层,主要由中间部分实现时间记忆功能。
- 神经网络输入x并产生输出y,最后将输出的结果反馈回去。假设在一个时间t内,神经网络的输入除来自输入层的 x ( t ) x(t) x(t)外,还有上一时刻的输出 y ( t − 1 ) y(t-1) y(t−1),两者共同输入产生当前层的输出 y ( t ) y(t) y(t)。
- 将这个神经网络按照时间序列形式展开:
- 每个神经元的输出都是根据当前的输入 x ( t ) x(t) x(t)和上一时刻的 y ( t − 1 ) y(t-1) y(t−1)共同决定。它们对应的权重分别是 W x W_x Wx和 W y W_y Wy,单个神经元的输出计算如下:
y t = O ( x t T ⋅ W x + y t − 1 T ⋅ W y + b ) \boldsymbol { y } _ { t } = \mathcal { O } ( \boldsymbol { x } _ { t } ^ { \mathrm { T } } \cdot \boldsymbol { W } _ { x } + \boldsymbol { y } _ { t - 1 } ^ { \mathrm { T } } \cdot \boldsymbol { W } _ { y } + b ) yt=O(xtT⋅Wx+yt−1T⋅Wy+b) - 将隐藏层的层级展开,结果如下图:
- RNN单元在时间 t t t的状态记作 h t h_t ht, U U U表示此刻输入的权重, W W W表示前一次输出的权重, V V V表示此刻输出的权重。
- 在 t = 1 t=1 t=1时刻,一般 h 0 h_0 h0表示初始状态为0,随机初始化 U 、 W 、 V U、W、V U、W、V,公式如下:
h 1 = f ( U x 1 + W h 0 + b h ) O 1 = g ( V h 1 + b o ) \begin {array} { l } { h _ { 1 } = f ( U x _ { 1 } + W h _ { 0 } + b _ { h } ) } \\ { O _ { 1 } = g ( V h _ { 1 } + b _ { o } ) } \\ \end{array} h1=f(Ux1+Wh0+bh)O1=g(Vh1+bo) - f 和 g 均为激活函数(光滑的曲线函数), f f f可以是Sigmoid、ReLU、Tanh等激活函数, g g g通常是Softmax损失函数。 b h b_h bh是隐藏层的偏置项, b 0 b_0 b0是输出层的偏置项。
- 前向传播算法,按照时间 t t t向前推进,而此时隐藏状态 h 1 h_1 h1是参与下一个时间的预测过程。
h 2 = f ( U x 2 + W h 1 + b h ) O 2 = g ( V h 2 + b o ) \begin {array} { l } { h _ { 2 } = f ( U x _ { 2 } + W h _ { 1 } + b _ { h } ) } \\ { O _ { 2 } = g ( V h _ { 2 } + b _ { o } ) } \\ \end{array} h2=f(Ux2+Wh1+bh)O2=g(Vh2+bo) - 以此类推,最终可得到输出公式为:
h t = f ( U x t + W h t − 1 + b h ) O t = g ( V h t + b o ) \begin {array} { l } { h _ { t } = f ( U x _ { t } + W h _ { t-1 } + b _ { h } ) } \\ { O _ { t } = g ( V h _ { t } + b _ { o } ) } \\ \end{array} ht=f(Uxt+Wht−1+bh)Ot=g(Vht+bo) - 权重共享机制通过统一网络参数(W、U、V及偏置项)实现了三方面优势:一是降低计算复杂度,二是增强模型泛化能力,三是实现对可变长度连续序列数据的特征提取。该机制不仅能捕捉序列特征的时空连续性,还通过位置无关的特性避免了逐位置规则学习,但保留了序列位置的识别能力。
- 尽管RNN网络在时序数据处理上表现优异,其基础结构仍存在显著缺陷。理论上RNN应具备长期记忆能力和任意长度序列处理能力,但实际应用中会出现梯度消失现象。该问题源于两方面:一是BP算法的固有缺陷(前馈神经网络中随深度增加出现训练失效),二是RNN特有的长程依赖问题(时间跨度导致记忆衰减)。从数学视角看,当激活函数导数小于1时,多层网络梯度呈指数衰减;反之若导数大于1则引发指数级梯度膨胀,造成网络失稳(即梯度爆炸问题)。
- 针对这些局限性,学界提出了两种主流改进架构:长短期记忆网络(LSTM)和门控循环单元(GRU)。
长短期记忆网络(LSTM)
- 长短期记忆网络(Long Short-Term Memory,LSTM)主要为了解决标准RNN在处理长序列数据时面临的梯度消失等问题。
- 基本的LSTM结构单元如图:
- 图中四个矩形即图标1,2,3,4是普通神经网络的隐藏层结构。其中 f ( t ) , i t , o ( t ) f_{(t),i_{{t}},o_(t)} f(t),it,o(t)都是Logistic函数, g ( t ) g_{(t)} g(t)是Tanh函数。
- LSTM单元状态分为长时记忆和短时记忆,其中短时记忆i用向量 h ( t ) h_{(t)} h(t)表示,长时记忆用 c ( t ) c_{(t)} c(t)表示。
- LSTM单元结构中还有三个门限控制器:忘记门限,输入门限和输出门限。三个门限都使用Logistic函数,如果输出值为1,表示门限打开;如果输出值为0,表示门限关闭。
- 忘记门限:主要用 f ( t ) f_{(t)} f(t)控制着长时记忆是否被遗忘。
- 输入门限:主要由 i ( t ) i_{(t)} i(t)和 g t g_{{t}} gt, i ( t ) i_{(t)} i(t)用于控制 g t g_{{t}} gt用于增强记忆的部分。
- 输出门限:主要由 o ( t ) o_{(t)} o(t)控制应该在该时刻被读取和输出的部分。
- LSTM单元的基本流程如下:随着短时记忆 c ( t ) c_{(t)} c(t)从左到右横穿整个网络,它首先经过一个遗忘门,丢弃一些记忆,然后通过输入门限来选择增加一些新记忆,最后直接输出 c ( t ) c_{(t)} c(t)。此外,增加记忆这部分操作中,长时记忆先经过Tanh函数,然后被输出门限过滤,产生了短时记忆ht)。
- 综上所述,LSTM可以识别重要的输入(输入门限的作用),并将这些信息在长时记忆中存储下来,通过遗忘门保留需要的部分,以及在需要的时候能够提取它。
- LSTM单元结构中的三个门限控制器、两种状态以及输出:
i ( t ) = σ ( w × i ⊤ ⋅ x ( t ) + w h i ⊤ ⋅ h ( t − 1 ) + b i ) f ( t ) = σ ( w × j ⊤ ⋅ x ( t ) + w h j ⊤ ⋅ h ( t − 1 ) + b f ) o ( t ) = σ ( w x o ⊤ ⋅ x ( t ) + w h o ⊤ ⋅ h ( t − 1 ) + b o ) g ( t ) = T a n h ( w x g ⊤ ⋅ x ( t ) + w h g ⊤ ⋅ h ( t − 1 ) + b g ) c ( t ) = f ( t ) ⊗ c ( t − 1 ) + i ( t ) ⊗ g ( t ) y ( t ) = h ( t ) = o ( t ) ⊗ T a n h ( c ( t ) ) \begin{array} { r l } & { i _ { ( t ) } = \sigma ( w _ { \times i } ^ { \top } \cdot x _ { ( t ) } + w _ { h i } ^ { \top } \cdot h _ { ( t - 1 ) } + b _ { i } ) } \\ & { f _ { ( t ) } = \sigma ( w _ { \times j } ^ { \top } \cdot x _ { ( t ) } + w _ { h j } ^ { \top } \cdot h _ { ( t - 1 ) } + b _ { f } ) } \\ & { o _ { ( t ) } = \sigma ( w _ { x o } ^ { \top } \cdot x _ { ( t ) } + w _ { h o } ^ { \top } \cdot h _ { ( t - 1 ) } + b _ { o } ) } \\ & { g _ { ( t ) } = \mathrm { T a n h } ( w _ { x g } ^ { \top } \cdot x _ { ( t ) } + w _ { h g } ^ { \top } \cdot h _ { ( t - 1 ) } + b _ { g } ) } \\ & { c _ { ( t ) } = f _ { ( t ) } \otimes c _ { ( t - 1 ) } + i _ { ( t ) } \otimes g _ { ( t ) } } \\ & { y _ { ( t ) } = h _ { ( t ) } = o _ { ( t ) } \otimes \mathrm { T a n h } ( c _ { ( t ) } ) } \end{array} i(t)=σ(w×i⊤⋅x(t)+whi⊤⋅h(t−1)+bi)f(t)=σ(w×j⊤⋅x(t)+whj⊤⋅h(t−1)+bf)o(t)=σ(wxo⊤⋅x(t)+who⊤⋅h(t−1)+bo)g(t)=Tanh(wxg⊤⋅x(t)+whg⊤⋅h(t−1)+bg)c(t)=f(t)⊗c(t−1)+i(t)⊗g(t)y(t)=h(t)=o(t)⊗Tanh(c(t)) - w x i 、 w x f 、 w x o 、 w x g w_{xi}、w_{xf}、w_{xo}、w_{xg} wxi、wxf、wxo、wxg是每一层连接到 x ( t ) x_{(t)} x(t)的权重, w h i 、 w h f 、 w h o 、 w h g w_{hi}、w_{hf}、w_{ho}、w_{hg} whi、whf、who、whg是每层连接到前一个短时记忆 h ( t − 1 ) h_{(t-1)} h(t−1)的权重, b i 、 b f 、 b o 、 b g b_i、b_f、b_o、b_g bi、bf、bo、bg是每一层的偏置项。
门控循环单元(GRU)
-
门控循环单元(GateRecurrentUnit,GRU)是循环神经网络(RNN)的一个变种,它旨在解决标准RNN中梯度消失的问题。GRU结构更简单,效果更好。
-
GRU的设计初衷是解决长期依赖问题,即标准RNN难以捕捉长序列中较早时间步的信息。通过引入更新门和重置门,GRU能够学习到何时更新或忽略某些信息,从而更好地处理序列数据。
-
相较于LSTM,GRU有更少的参数和计算复杂度,特别是在资源受限的情况下训练更快,同时也能取得不错的性能表现,。GRU已被广泛应用于各种序列建模任务,如语言模型、机器翻译、语音识别等领域。
-
GRU如图所示:
-
GRU中包含三个激活函数,分别为Logistic、Logistic、Tanh函数。
-
如图所示,GRU通过精简门控机制提升了计算效率,其核心特征如下:
-
门控结构简化:
- 采用**重置门(r)和更新门(z)**双门架构,激活函数缩减至3个(使用Sigmoid或Logistic函数,输出0~1的门控信号)。
- 合并状态向量为单一隐藏状态 h t h_t ht,简化信息流动路径。
-
门控功能详解:
- 重置门(r):控制前一时刻隐藏状态 h t − 1 h_{t-1} ht−1对当前候选状态的影响程度。门值越接近0,丢弃的历史信息越多,主层(如Tanh激活单元)将更多依赖当前输入 x t x_t xt 重新计算候选状态。
- 更新门(z):调节 h t − 1 h_{t-1} ht−1 传递至当前状态 h t h_t ht 的比例。门值越接近1,保留的历史信息比例越高,新生成的信息比例越低。
-
工作流程:
- 步骤1:根据 h t − 1 h_{t-1} ht−1 和 x t x_t xt 计算重置门 r t r_t rt 和更新门 z t z_t zt。
- 步骤2:利用 r t r_t rt 重置 h t − 1 h_{t-1} ht−1,生成候选状态 h ~ t \tilde{h}_t h~t(通常通过Tanh激活)。
- 步骤3:通过 z t z_t zt 加权融合 h t − 1 h_{t-1} ht−1 与 h ~ t \tilde{h}_t h~t,输出最终状态 h t h_t ht。
- GRU单元结构的计算过程:
z ( t ) = σ ( w x z T ⋅ x ( t ) + w h z T ⋅ h ( t − 1 ) ) r ( t ) = σ ( w x r T ⋅ x ( t ) + w h r T ⋅ h ( t − 1 ) ) g ( t ) = T a n h ( w x g T ⋅ x ( t ) + w h g T ⋅ ( r ( t ) ⊗ h ( t − 1 ) ) ) h ( t ) = ( 1 − z ( t ) ) ⊗ T a n h ( w x g T ⋅ h ( t − 1 ) + z ( t ) ⊗ g ( t ) ) \begin{array} { r l } & { z _ { ( t ) } = \sigma ( w _ { x z } ^ { \mathrm { T } } \cdot x _ { ( t ) } + w _ { h z } ^ { \mathrm { T } } \cdot h _ { ( t - 1 ) } ) } \\ & { r _ { ( t ) } = \sigma ( w _ { x r } ^ { \mathrm { T } } \cdot x _ { ( t ) } + w _ { h r } ^ { \mathrm { T } } \cdot h _ { ( t - 1 ) } ) } \\ & { g _ { ( t ) } = \mathrm { T a n h } ( w _ { x g } ^ { \mathrm { T } } \cdot x _ { ( t ) } + w _ { h g } ^ { \mathrm { T } } \cdot ( r _ { ( t ) } \otimes h _ { ( t - 1 ) } ) ) } \\ & { h _ { ( t ) } = ( 1 - z _ { ( t ) } ) \otimes \mathrm { T a n h } ( w _ { x g } ^ { \mathrm { T } } \cdot h _ { ( t - 1 ) } + z _ { ( t ) } \otimes g _ { ( t ) } ) } \end{array} z(t)=σ(wxzT⋅x(t)+whzT⋅h(t−1))r(t)=σ(wxrT⋅x(t)+whrT⋅h(t−1))g(t)=Tanh(wxgT⋅x(t)+whgT⋅(r(t)⊗h(t−1)))h(t)=(1−z(t))⊗Tanh(wxgT⋅h(t−1)+z(t)⊗g(t)) - w x z 、 w x r w_{xz}、w_{xr} wxz、wxr 和 w x g w_{xg} wxg是每一层连接到输入 x ( t ) x(t) x(t)的权重, W h z 、 W h r , W_{hz}、W_{hr}, Whz、Whr,和 W h g W_{hg} Whg 是每一层连接到前一个短时记忆 h ( t − 1 ) h_{(t-1)} h(t−1)的权重。
相关文章:
PyTorch循环神经网络(Pytotch)
文章目录 循环神经网络(RNN)简单的循环神经网络长短期记忆网络(LSTM)门控循环单元(GRU) 循环神经网络(RNN) 循环神经网络(RecurrentNeuralNetwork,RNN&#…...
django中用 InforSuite RDS 替代memcache
在 Django 项目中,InforSuite RDS(关系型数据库服务)无法直接替代 Memcached,因为两者的设计目标和功能定位完全不同: 特性MemcachedInforSuite RDS核心用途高性能内存缓存,临时存储键值对数据持久化关系型…...
Git 常用命令详解
Git 常用命令详解(含详细示例) 本文整理了 Git 日常使用中最常用的命令,适合初学者和日常查阅,如有错误,敬请指正,谢谢! ☁️ Git 使用流程入门(从 pull 和 push 开始) …...
AI、机器学习、深度学习:一文厘清三者核心区别与联系
AI、机器学习、深度学习:一文厘清三者核心区别与联系 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 在人工智能技术席卷全球的今天&…...
《数字藏品社交化破局:React Native与Flutter的创新实践指南》
NFT,这种非同质化代币,赋予了数字资产独一无二的身份标识,从数字艺术作品到限量版虚拟物品,每一件NFT数字藏品都承载着独特的价值与意义。当React Native和Flutter这两大跨平台开发框架遇上NFT数字藏品,一场技术与创意…...
工业操作系统核心技术揭秘
摘要 随着工业 4.0 与智能制造的深入推进,工业操作系统作为工业数字化转型的核心支撑,其技术发展备受关注。本文深入剖析工业操作系统的核心技术,包括实时性保障机制、硬件抽象层设计、多任务管理策略等,结合技术原理与实际应用场…...
Python logging模块使用指南
Python 的 logging 模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能,包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍: 一、为什么使用 logging 模块?…...
沃伦森智能无功补偿系统解决电力电容器频繁投切的隐患
在现代电力系统中,无功补偿设备的稳定运行直接影响电网质量。然而,电力电容器的频繁投切问题长期存在,如同电网的“慢性病”,不仅加速设备老化,还可能引发系统性风险。作为电力电子领域的领军企业,沃伦森电…...
【HarmonyOS 5】鸿蒙mPaaS详解
【HarmonyOS 5】鸿蒙mPaaS详解 一、mPaaS是什么? mPaaS 是 Mobile Platform as a Service 的缩写,即移动开发平台。 蚂蚁移动开发平台mPaaS ,融合了支付宝科技能力,可以为移动应用开发、测试、运营及运维提供云到端的一站式解决…...
PyTorch中.item()函数:提取单元素张量值
PyTorch中,.item()函数是什么 在PyTorch代码中,.item() 主要用于从一个只包含单个元素的张量(Tensor)中提取出对应的Python标量值 ,具体作用和使用场景如下: 作用 获取数值:当通过计算得到一个张量,且该张量仅包含一个元素时,使用 .item() 方法可以方便地将这个元素…...
PyTorch LSTM练习案例:股票成交量趋势预测
文章目录 案例介绍源码地址代码实现导入相关库数据获取和处理搭建LSTM模型训练模型测试模型绘制折线图主函数 绘制结果 案例介绍 本例使用长短期记忆网络模型对上海证券交易所工商银行的股票成交量做一个趋势预测,这样可以更好地掌握股票买卖点,从而提高…...
ARM A64 LDR指令
ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…...
一些问题杂记
1. 在 SSH 会话/bash中仅使用cat命令查看文件后使用umount命令提示挂载点繁忙,lsof命令查看是bash有占用,但是并没有打开文件之类的情况 原因:当前工作目录仍在挂载点内,使用cat查看文件时,可能当前工作目录ÿ…...
【OpenGL学习】(一)创建窗口
文章目录 【OpenGL】(一)创建窗口 【OpenGL】(一)创建窗口 GLFW OpenGL 本身只是一套图形渲染 API,不提供窗口创建、上下文管理或输入处理的功能。 GLFW 是一个支持创建窗口、处理键盘鼠标输入和管理 OpenGL 上下文的…...
RTSP 播放器技术探究:架构、挑战与落地实践
RTSP 播放器为什么至今无法被淘汰? 在实时视频传输领域,RTSP(Real-Time Streaming Protocol)作为最基础、最常见的协议之一,至今依然被广泛用于监控设备、IP Camera、视频服务器等设备中。然而,要构建一个稳…...
【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本
问题描述: MAC电脑,升级了新系统之后(v15.4.1)。 这时,安装惠普(HP)打印机驱动,提示:This update requires macOS version 15.0 or earlier(此更新需要macOS…...
场景新零售:基于开源AI大模型AI智能名片S2B2C商城小程序源码的商业本质回归与创新
摘要:本文聚焦场景新零售,探讨在新生代消费群体推动下传统零售模式的创新升级。通过分析新生代消费群体的特点以及场景新零售的发展趋势,阐述开源AI大模型AI智能名片S2B2C商城小程序源码在场景新零售中的应用优势,包括精准营销、供…...
16.2 VDMA视频转发实验之模拟源
文章目录 1 实验任务2 系统框图3 硬件设计3.1 IP核配置3.2 注意事项3.3 自定义IP核源码 1 实验任务 基于14.1,相较于16.1,使用自定义IP核vid_gen_motion替换Xilinx TPG IP核。 2 系统框图 基于14.1,添加自定义IP核vid_gen_motion作为视频源…...
PADS 9.5安装教程
1.安装包 https://pan.baidu.com/s/1bt6vE3y8VEmlFwJfoV32nA?pwdj2cg 2.PADS 9.5安装教程 PADS 9.5安装教程(Windows11、超详细版)_pads9.5-CSDN博客 3.出现的问题 1.打开无法使用鼠标滚轮 Win10 pads卡死问题解决,输入法的兼容性问…...
趣味编程:钟表
目录 1. 效果展示 2. 源码展示 3. 逻辑概述 3.1 表针绘制函数(DrawHand) 3.2 表盘绘制函数 3.3 主程序逻辑 4. 小结 概述:本篇博客主要介绍简易钟表的绘制。 1. 效果展示 该钟表会随着系统的时间变化而变化,动态的效…...
.NET 通过命令行解密web.config配置
在.NET应用系统中,保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionConfigurationProvider 加密连接字符串的方法,以防止敏感数据泄露。然而,在内网信息收集阶段,攻击者只需在目标主机上运行aspnet_regiis.exe这个命令行工具即可完成解密,获取数…...
【MySQL】多表连接查询
个人主页:Guiat 归属专栏:MySQL 文章目录 1. 多表连接查询概述1.1 连接查询的作用1.2 MySQL支持的连接类型 2. 内连接 (INNER JOIN)2.1 内连接的特点2.2 内连接语法2.3 内连接实例2.4 多表内连接 3. 左外连接 (LEFT JOIN)3.1 左外连接的特点3.2 左外连接…...
【AI论文】用于评估和改进大型语言模型中指令跟踪的多维约束框架
摘要:接下来的指令评估了大型语言模型(LLMs)生成符合用户定义约束的输出的能力。 然而,现有的基准测试通常依赖于模板化的约束提示,缺乏现实使用的多样性,并限制了细粒度的性能评估。 为了填补这一空白&…...
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
本文运用AI量化分析框架,结合市场情绪因子、宏观经济指标及技术面信号,对黄金与美元指数的联动关系进行解析,揭示本轮贵金属回调的深层驱动因素。 周三,现货黄金价格单日跌幅达2.1%,盘中触及3167.94美元/盎司关键价位&…...
低成本高效图像生成:GPUGeek和ComfyUI的强强联合
一、时代背景 在如今的数字化时代,图像生成技术正不断发展和演变,尤其是在人工智能领域。无论是游戏开发、虚拟现实,还是设计创意,图像生成已成为许多应用的核心技术之一。然而,随着图像质量需求的提升,生成…...
React 第四十二节 Router 中useLoaderData的用途详解
一、前言 useLoaderData,用于在组件中获取路由预加载的数据。它通常与路由配置中的 loader 函数配合使用,用于在页面渲染前异步获取数据(如 API 请求),并将数据直接注入组件,从而简化数据流管理。 二、us…...
【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】
一定要拼尽全力,才能看起来毫不费劲 —— 25.5.15 一、提示词工程 1.提示词工程介绍 Ⅰ、什么是提示词 所谓的提示词其实就是一个提供给模型的文本片段,用于指导模型生成特定的输出或回答。提示词的目的是为模型提供一个任务的上下文,以便模…...
GPUGeek云平台实战:DeepSeek-R1-70B大语言模型一站式部署
随着人工智能技术的迅猛发展,特别是在自然语言处理领域,大型语言模型如DeepSeek-R1-70B的出现,推动了各行各业的变革。为了应对这些庞大模型的计算需求,云计算平台的普及成为了关键,特别是基于GPU加速的云平台…...
【抽丝剥茧知识讲解】引入mybtis-plus后,mapper实现方式
目录 前言一、传统 Mapper 接口方式二、继承 BaseMapper 的方式三、自定义通用 Mapper 的方式四、使用 MyBatis-Plus 的 ActiveRecord 模式五、使用 MyBatis-Plus 的 IService 接口六、使用建议 前言 mapper文件,作为Mybatis框架中定义SQL语句和映射关系的配置文件&…...
AI浪潮:开启科技新纪元
AI 的多面应用 AI 的影响力早已突破实验室的围墙,在众多领域落地生根,成为推动行业变革的重要力量。 在医疗领域,AI 宛如一位不知疲倦的助手,助力医生提升诊疗效率与准确性。通过对海量医学影像的深度学习,AI 能够快…...
制造业工厂的三大核心系统:ERP+PLM+MES
对于一家制造业工厂来说,要实现数字化转型,哪几个系统最重要?答案是:ERP,PLM和MES这三个核心系统最为重要!本文就为你快速地概览地介绍一下这三个系统 以及 它们之间的关联关系。 ERP:企业资源计划 ERP的全称是Enterprise Resource Planning,即企业资源计划系统。 它…...
驱动-定时-秒-字符设备
文章目录 目的相关资料参考实验驱动程序-timer_dev.c编译文件-Makefile测试程序-timer.c分析 加载驱动-运行测试程序总结 目的 通过定时器timer_list、字符设备、规避竞争关系-原子操作,综合运用 实现一个程序,加深之前知识的理解。 实现字符设备驱动框…...
(面试)Handler消息处理机制原理
Handler是用于实现线程间通信和任务调度的一种机(Handler、 Looper、MessageQueue、 Message)。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI࿰…...
WebRTC 通话原理:从协商到通信
在实时音视频通信领域,WebRTC(Web Real-Time Communication)凭借其开源、无需插件且能在浏览器中直接实现高质量通信的特性,成为开发者的热门选择。本文将深入解析 WebRTC 通话原理,涵盖媒体协商、网络协商、网络穿越&…...
InforSuite AS 可以发布django和vue项目是否可行
InforSuite AS 是浪潮推出的企业级中间件平台,主要用于应用集成、流程管理、数据交换等场景,其核心功能更偏向于 Java EE 应用的部署和管理(如支持 WAR/EAR 包)。关于能否直接发布 Django(Python 框架)和 V…...
【中级软件设计师】网络攻击(附软考真题)
【中级软件设计师】网络攻击(附软考真题) 目录 【中级软件设计师】网络攻击(附软考真题)一、历年真题二、考点:网络攻击1、拒绝服务攻击(DoS攻击)2、重放攻击3、特洛伊木马4、网络监听5、SQL注入…...
CSS图片垂直居中问题解决方案
在 CSS 中,使用 vertical-align: middle 导致图片略微向下偏移的现象,本质上是由于 行内元素的基线对齐规则 和 父容器上下文环境 共同作用的结果。以下是具体原因和解决方案: 原因详解 1. vertical-align: middle 的真实含义 该属性 不会让…...
P1601 A+B Problem(高精)
题目描述 高精度加法,相当于 ab problem,不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行,代表 ab 的值。 输入输出样例 输入 1 1 输出 2 输入 1001 9099 输出 10100 说明/提示 20% 的测试数据…...
鸿蒙OSUniApp实现个性化的搜索框与搜索历史记录#三方框架 #Uniapp
使用UniApp实现个性化的搜索框与搜索历史记录 在移动端应用开发中,搜索功能几乎是标配,而一个好的搜索体验不仅仅是功能的实现,更是用户留存的关键。本文将分享如何在UniApp框架下打造一个既美观又实用的搜索框,并实现搜索历史记录…...
鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp
UniApp 制作自定义弹窗与模态框组件 前言 在移动应用开发中,弹窗和模态框是用户交互的重要组成部分,它们用于显示提示信息、收集用户输入或确认用户操作。尽管 UniApp 提供了基础的交互组件如 uni.showModal() 和 uni.showToast(),但这些原…...
web第一次课后作业--运行一个java web项目
一、创建java web项目 1.新建java EE --> 模版:Web应用程序 2.选择版本:Java EE 8 3. 配置tomcat 二、页面效果 默认页面 跳转页面 三、代码 3.1 默认页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8…...
工业互联网
工业互联网全景解析 工业互联网是工业数字化、网络化、智能化转型升级的重要抓手,是实现中国制造 2025 战略目标的重要路径,对于推动我国实体经济高质量、可持续发展,建设制造强国、网络强国,意义重大。2017 年,我国提…...
论QT6多线程技术
前言 以前我多线程使用传统的继承qthread重写run()或者继承qrunable类把对象丢到线程池解决。经过昨天的面试让我了解到新的技术,我之前看到过只不过没有详细的去了解movetotread技术,这个技术是qt5推出的,qt6还在延续使用 代码结构 以下是…...
TensorFlow深度学习实战(16)——注意力机制详解
TensorFlow深度学习实战(16)——注意力机制详解 0. 前言1. 引入注意力机制2. 注意力机制2.1 注意力机制原理2.2 注意力机制分类 3. 添加注意机制的 Seq2Seq 模型3.1 数据处理3.2 模型构建与训练3.3 模型性能评估 小结系列链接 0. 前言 在传统的神经网络…...
架空防静电地板材质全解析:选对材质,守护精密空间的“安全卫士”
在现代科技驱动的社会中,无论是数据中心、实验室、手术室,还是高端电子厂房,静电都是精密设备的“隐形杀手”。而架空防静电地板作为这些场所的“安全卫士”,其材质选择直接决定了防静电性能、承重能力及使用寿命。今天࿰…...
Linux系统中部署java服务(docker)
1、不使用docker ✅ 1. 检查并安装 Java 环境 检查 Java 是否已安装: java -version✅ 2. 上传 Java 项目 JAR 文件 可以创建一个server文件夹,然后上传目录 查看当前目录 然后创建目录上传jar包 ✅ 3. 启动 Java 服务 java -jar hywl-server.jar…...
PyGame游戏开发(入门知识+组件拆分+历史存档/回放+人机策略)
前言: 本章实现游戏组件的复用解耦,以及使用配置文件替代原有硬编码形式,进而只需要改动配置文件即可实现整个游戏的难度和地图变化,同时增加历史记录功能,在配置文件开启后即可保存每一局的记录为json形式作为后续强化…...
【上位机——WPF】Window标签常用属性
常用属性 常用属性程序退出 常用属性都是写在Window标签中的 <Window x:Class"WpfDemo1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"…...
K8S Gateway AB测试、蓝绿发布、金丝雀(灰度)发布
假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、场景分析 阅读本文,默认您已经安装了 K8S Gateway。 关于 AB 测试、金丝雀发布,可以看这篇文章。 二、实验准…...
人大金仓数据库 与django结合
要在Django项目中连接人大金仓数据库(Kingbase),你需要使用一个适合的数据库适配器。人大金仓数据库是基于PostgreSQL的,因此你可以使用psycopg2库来与Django连接。但是,由于人大金仓数据库有其特定的功能和配置&#…...