深度学习(一)
(Ⅰ)神经网络和深度学习
一,ReLU激活函数
ReLU(Rectified Linear Unit)函数,输入大于0时,直接输出该值;输入小于0时,输出0
代码实现:
图中的每个节点都可以是ReLU激活函数的一部分
二,循环神经网络(Recurrent Neural Network,RNN)
RNN,神经网络的一种,对具有序列特性的数据非常有效,能挖掘数据中的时序信息以及语义信息。(序列特性:符合时间顺序,逻辑顺序等其他顺序的性质)
结构:
循环神经网络中,上一次的输出将会作为下一次的输入
三,计算图
计算图的导数计算-链式求导:
计算图中的反向传播将局部导数从右往左传播,基于链式求导法则
将信号E乘以节点的局部导数,然后传递给下一节点(如上图)
链式求导法则则是基于复合函数求导,描述局部值的变化对输出值的影响
四,numpy
(1)利用numpy中的np.dot()实现向量化计算
时间复杂度和for循环方法均为O(n),但是实际执行时间比for循环快100-1000倍
原因:
①np.dot()可以减少python解释器循环的开销:np.dot()可以不用检查下标i是否越界,解析a[i] b[i]的数据类型,可以减少时间
②np.dot()可以实现SIMD指令优化
③np.dot()可以实现CPU缓存预取:可以准确访问每个值,提前加载,进行计算
(2)numpy向量化实现逻辑回归
(3)numpy的广播机制:
numpy的广播机制是一种高效处理不同形状数组间的运算规则,允许逐个元素操作而无需复制
Example1:
利用np.sum(axis=0)实现矩阵按列求和
np.sum(axis=1)实现矩阵按行求和
Example2:
numpy面对不同形状的矩阵时,允许逐个元素进行相应的计算操作
等价于
Example3:
等价于
(4)numpy中向量的说明:
当用调用np.array()创建数组时,不推荐创建秩为1的简单数组,而是直接创建成列向量or行向量
直接创建秩为1的数组时,容易产生bug
五,激活函数
(1)tanh激活函数:
tanh激活函数是sigmoid平移伸缩的结果,拟合效果在所有场合都优于sigmoid,且几乎适用于所有场合。
(二分类输出层使用sigmoid是因为想让输出结果介于[0,1],所以使用sigmoid)
(2)LeakyReLU激活函数:
ReLU的改良版,当输入为负值时,输出值不为0,而是稍微倾斜,激活效果比ReLu好
(3)激活函数的选择
①二分类问题,输出层选择sigmoid,其他所有单元选择ReLU
②在实践中,ReLU的学习速度快于sigmoid,因为sigmoid要进行浮点四则运算
③隐藏层通常选择ReLU,也会选择tanh(注:选择ReLU时,输入为负值时,输出0)
④不能在隐藏层使用线性激活函数,唯一可以使用线性激活函数的通常是输出层:因为线性激活函数导数通常是常数,梯度下降时梯度值不变
六,随机初始化
对于一个神经网络,初始化权重(W)和其他参数为0时,无法进行梯度下降,并且由于对称性,反向传播的导数也是一样的,激活函数也是一样的。无论花多少时间拟合,都是一样的,拟合效果差(对于逻辑回归,可以初始化权重为0)
可以随机初始化权重(W),初始化为一个很小很小的数(通常为0.01),若一开始初始化为很大很大的数,激活函数(sigmoid/tanh)的函数值就会趋向平稳,学习速率慢
七,深层神经网络
深层神经网络本质上就是更复杂的,包含更多隐藏层的神经网络(如上图)
(1)符号表示
L:表示神经网络的层数(隐藏层+输出层)
n[x]:表示第x层的神经网络有n[x]个神经元
a[x]:表示第x层的神经网络的激活函数
W[x]:表示第x层的权重
此外,输入层为a[0],输出层(y-hat)为a[L]
(2)深层神经网络的向前传播和反向传播
本质上和普通神经网络的向前传播和反向传播无异,只是计算较为复杂
向前传播(向量化):
反向传播:
(3)核对神经网络中矩阵的维数:
根据已知数据(输入层,输出层,激活函数等),通过已知数据的矩阵的维度,依据矩阵乘法法则,来倒推权重(W),和偏置(b)的维度,以此来检验神经网络中矩阵的维数。
(4)深层神经网络的优点:
深层神经网络较普通神经网络,隐藏层的数目更多,可以提取到的特征的复杂度更大;且深层神经网络可以减少神经元的个数,减少计算量,从而加快学习速率
深层神经网络应用于图像处理中,可以提取更丰富的特征,由简单到复杂,越复杂,准确率就越高
(5)神经网络块表示深层神经网络(类似计算图):
可以表示正向传播和反向传播,类似于计算图
(6)参数和超参数:
参数:权重(W),偏置(b),是模型在训练过程中自动学习的变量,用于拟合数据和做出预测,数量级非常大(百万级)
超参数:隐藏层数(L),学习率,迭代次数,是模型在训练前手动设置的,不通过数据学习,控制训练过程,数量级通常较少
两者形成合适的组合可以实现模型的最优:参数实现具体拟合,超参数实现模型的潜力
(Ⅱ)深层神经网络的优化
一,数据集(训练集+验证集+测试集)
训练集:拟合模型
验证集:调整模型超参数和初步评估模型能力
测试集:最终评估模型
数据集的切分:
小数据时代:通常是验证:测试=7:3 或者 训练:验证:测试=6:2:2
大数据时代:训练集的比例通常占据大部分,占据99%以上,验证集和测试集比例减少
数据集的来源最好保证统一,可以使得模型泛化能力更好
二,偏差-方差困境
偏差-方差困境是模型复杂度和泛化能力之间的根本矛盾,核心目标是找到偏差和方差的平衡点,使得模型总误差最小
偏差和方差在模型中的应用:
三,正则化
L1正则化 和 L2正则化
(1)L1正则化:
L1正则化倾向于将部分参数压缩到0,从而实现特征选择,自动筛选重要特征,适用于特征维度较高,且需要减少特征数量的场景。
但是对异常值敏感,当特征高度相关时,可能随机选择一个特征,忽略其他特征
(2)L2正则化:
L2正则化更倾向于让所有参数接近0但不为0,保持参数平滑分布,使用于特征之间高度相关
(3)为什么正则化可以减少过拟合:
核心原理是正则化通过在模型训练过程中加入额外的约束(即正则化参数项用来惩罚),从而限制模型参数的复杂度,从而防止过拟合
以逻辑回归为例:
当正则化参数(λ)初始值很大时,权重(W)会接近于0,使得神经网络中的神经元作用变得很小,整个神经网络更接近逻辑回归。
(4)dropout正则化:
Dropout正则化通过随机”丢弃”神经元来防止模型过拟合,适用于深度神经网络
实施步骤:
遍历神经网络的每一层 ---> 随机为神经网络中的每个节点设置消除的概率 ---> 删除节点后,移除所有从该节点进入和出去的连接 ---> 最终得到较小的神经网络 ---> 反向传播
dropout实现方法(Inverted Dropout):
Inverted Dropout在训练阶段对保留的神经元进行缩放,缩放激活值,从而使得训练和测试阶段的激活值期望一致,从而无需在测试时调整参数
(训练和测试阶段激活值期望一致,可以避免预测偏差,确保模型输出在训练和测试时候的分布一致;且使得梯度稳定,权重正确收敛)
dropout的功能类似于L2正则化,对于不同的神经网络层,使用不同的消除概率(对于参数集中的层,使用较低的消除概率)。但是dropout需要交叉验证更多的参数(由于dropout中损失函数不再被明确定义,每次迭代,都会随机移除一些节点,很难复查梯度下降的性能。在实际操作中,可以先关闭dropout,确保损失函数单调递减,然后在开启dropout)
(5)其他正则化方法:
①数据扩增:用于处理图片数据(扩增数据集通常成本较高),可以通过水平翻转,随意裁剪,旋转,放大等扩增数据,进而正则化数据集,减少过拟合
对于数字识别,可以对数字进行扭曲,旋转
②Early stopping:
Early stopping,提前停止。
在模型训练过程中监控验证集性能,及时终止训练以防止过拟合。
在模型开始过拟合之前停止训练,从而在偏差和方差之间取得平衡(即在验证集误差和训练集误差同时取得最低点时终止训练)
Early stopping可以只进行一次梯度下降,找出权重(W)的较小值,中间值和最大值,与L2正则化相比,无需尝试更多正则化参数,且比L2正则化训练时间少,成本低
但是Early stopping不能同时处理过拟合和损失函数不够小的问题。
四,输入归一化
(1)输入归一化,一种数据预处理的技术。可以加速模型训练
实现步骤:
①减去或归零均值:将数据集中的所有数据减去均值
②归一化方差:将所有数据除以方差
实现目的:”优化”损失函数,使损失函数的图像更”圆润”。可以使用较大的学习率,更快的找到最优的权重(W)和偏置(b)
(2)梯度消失与梯度爆炸:
梯度消失:反向传播时,梯度随着网络深度逐层减少,最终接近于0,使得浅层参数几乎不更新。导致模型训练停滞,损失函数无法下降。
梯度爆炸:梯度随着网络深度指数级增长,数值超出范围。导致模型参数更新步长过大,模型发散
解决方法:
神经网络权重初始化:
为了防止Z的值过大或过小(Z=W·X),当输入特征数量n越大时,权重(W)越小。
可以设置权重(W)的方差=1/n来实现。
在实践中可以设置网络中某层的权重矩阵为
(3)梯度检验:
梯度数值的逼近:在反向传播时,计算误差,需要使用双边误差而不使用单边误差来逼近梯度的数值
梯度检验:用来验证神经网络中反向传播梯度计算的正确性。通过上述方法计算近似梯度,与解析梯度对比,来确保代码的无误。
实现步骤:
①参数向量化:将神经网络中的所有参数(权重W,偏置b)拼接成一个一维向量θ
②中心差分法进行梯度计算:对于每个θ加以轻微扰动(1e-5 - 1e-7),计算损失函数变化量,近似梯度
③将理论值的梯度和近似值的梯度对比,进行检查。
(4)Mini-batch梯度下降:
Mini-batch梯度下降适用于处理巨大的数据集。
面对巨大的数据集,向量化虽然可以加速梯度下降,但是进行下一次梯度下降时,必须完成当前次的梯度下降,导致速率低下
Mini-batch梯度下降,将巨大的数据集分割成较小的子集(即Mini-batch),每次只用处理单个较小的训练子集,从而实现梯度的下降
Batch梯度下降 VS Mini-batch 梯度下降
由于Mini-batch梯度下降时的学习率过大,且每次迭代都在训练不同的数据子集,会导致Mini-batch的损失函数跌宕起伏,但是总体上呈下降趋势
Mini-batch梯度下降中Mini-batch size的选择:
Size=m,即等于数据集大小,就是batch梯度下降,速率慢
Size=1,随机梯度下降法,梯度下降波动较大,不稳定
Size在(1,m)Mini-batch一般选择64,128等2的幂次
五,指数加权平均数
指数加权平均数通过对历史数据赋予指数衰减的权重来计算移动平均值
越近期的数据对当前平均值的影响越大,而历史数据的影响随指数衰减
上图中:
红β=0.9,表示过去10天的平均气温
绿β=0.98,表示过去50天的平均气温,曲线平缓
黄β=0.5,表示过去2天的平均气温,曲线抖动明显,适应快
六,动量梯度下降法
计算梯度的指数加权平均数,然后使用该梯度更新权重(W)
上图为标准的梯度下降,中心红点为最小的权重(W)和偏置(b)。标准的梯度下降会上下波动,且要使用较小的学习率,否则会偏离(如紫线)
使用动量梯度下降法:
可以引入动量项,将历史的梯度方向积累到当前更新中。可以在梯度方向一致的维度加速更新,减少震荡。(注:动量梯度下降法适用于碗状)
七,RMSprop
Root Mean Square Propagation,自适应学习率的优化算法。可以动态调整每个参数的学习率,提升模型的训练效率和稳定性
更新步骤:
①计算梯度平方的指数加权平均数
②更新参数:
RMSprop和动量梯度下降法类似,可以消除梯度下降和Mini-batch梯度下降的摆动,并且可以使用一个较大的学习率,加快学习速率
八,Adam算法
Adam算法=动量梯度下降+RMSprop
可以动态调整每个参数的学习率,同时利用梯度的均值和方差来实现更新
实现步骤:
①计算均值
②计算方差
③偏差矫正
④参数更新
九,学习率衰减
梯度下降时,若使用固定的学习率(如蓝线),则可能会找不到最低点;使用衰减的学习率,在学习初期,使用较大的学习率,可以加快学习速度。开始收敛的时候,使用较小的学习率,缓慢靠近最低点。
梯度下降中,面对局部最优:
高纬度空间中,极低的概率会遇到左图所示的局部最优点,大部分情况可能是如右图所示的鞍点
且基本上不会遇见局部最优问题,常见的可能是平稳段(如下图),减缓了学习速率,该梯度接近于0。可以利用上述方法加速。
相关文章:
深度学习(一)
(Ⅰ)神经网络和深度学习 一,ReLU激活函数 ReLU(Rectified Linear Unit)函数,输入大于0时,直接输出该值;输入小于0时,输出0 代码实现: 图中的每个节点都可以是ReLU激活函数的一部分 二,循环神经…...
【LeetCode 热题100】二叉树遍历入门:从中序遍历到层序与右视图(力扣94 / 102/199)(Go语言版)
🌳 二叉树遍历入门:从中序遍历到层序与右视图 本文涵盖 LeetCode 上的三道基础但极具代表性的二叉树遍历题: 二叉树的中序遍历 二叉树的层序遍历 二叉树的右视图 通过这些题目,我们将从 DFS 到 BFS,深入理解如何处理…...
Tauri 2.3.1+Leptos 0.7.8开发桌面应用--Sqlite数据库的写入、展示和选择删除
在前期工作的基础上(Tauri2Leptos开发桌面应用--Sqlite数据库操作_tauri sqlite-CSDN博客),尝试制作产品化学成分录入界面,并展示数据库内容,删除选中的数据。具体效果如下: 一、前端Leptos程序 前端程序主…...
MySQL 5.7.43 二进制安装指南:从零开始的高效快速实现安装部署
目录 引言:为什么选择二进制安装? 1 环境准备 1.1 基础环境检查 1.2 系统安全设置 2 系统优化配置 2.1 磁盘调度策略 2.2 系统资源限制 3 mariadb删除 4 依赖包安装 5 MySQL二进制安装包下载 6 MySQL安装部署 6.1 解压安装包 6.2 创建用户以…...
使用U盘安装 ubuntu 系统
1. 准备U 盘制作镜像 1.1 下载 ubuntu iso https://ubuntu.com/download/ 这里有多个版本以供下载,本文选择桌面版。 1.2 下载rufus https://rufus.ie/downloads/ 1.3 以管理员身份运行 rufus 设备选择你用来制作启动项的U盘,不能选错了;点…...
【家政平台开发(42)】筑牢家政平台安全防线:安全测试与漏洞修复指南
本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...
JavaWeb-04-Web后端基础(SpringBootWeb、HTTP协议、分层解耦、IOC和DI)
目录 一、SpringBootWeb入门 1.1 概述 1.2 入门程序 1.2.1 需求 1.2.2 开发步骤 1.3 入门解析 二、HTTP协议 2.1 HTTP概述 2.1.1 介绍 2.1.2 特点 2.2 HTTP请求协议 2.2.1 介绍 2.2.2 获取请求数据 2.3 HTTP响应协议 2.3.1 格式介绍 2.3.2 响应状态码 2.3…...
随笔 20250413 Elasticsearch 的 term 查询
你这个问题非常经典,来自于 Elasticsearch 的 term 查询是 ✅精确匹配(case-sensitive,大小写敏感)! 🧨 为什么查不到 "World"? 你的查询语句是: GET /movie/_search {&…...
zk(Zookeeper)实现分布式锁
Zookeeper实现分布式锁 1,zk中锁的种类: 读锁:大家都可以读,要想上读锁的前提:之前的锁没有写锁 写锁:只有得到写锁的才能写。要想上写锁的前提是:之前没有任何锁 2,zk如何上读锁 创…...
操作系统简要概述
操作系统是计算机系统的核心软件,它管理和控制计算机硬件与软件资源,为用户提供方便、高效、安全的使用环境。以下是关于操作系统的详细介绍: 一、定义 操作系统(Operating System,简称 OS)是计算机硬件与…...
开漏模式的触发条件和工作状态
MOS管的漏-栅-源三极 漏极开路--开漏 电路整体概述 这是开漏(Open - Drain)电路结构,核心由输出控制模块和一对互补的MOS管(P - MOS和N - MOS)组成。开漏电路的特点是MOS管漏极开路,这种结构常用于需要实现…...
【Java学习笔记】Java第一课,梦开始的地方!!!
目录 1. 基本内容介绍和软件安装 2. 快速入门之第一个程序 hello world 3. 学习方法 基本介绍和软件安装 一、 Java 岗位与应用场景 说明:java 基础也称javaSE 岗位 1. javaEE 软件工程师 电商领域 团购 众筹 sns(社交网络) 教育 金…...
共享内存技术
一、共享内存 共享内存是一种高效的 进程间通信(IPC) 机制,允许多个进程直接访问同一块物理内存区域,无需通过内核缓冲区或文件进行数据拷贝。它通常用于需要 低延迟、高吞吐量 的数据交换场景(如实时系统、高频交易、…...
Lc 大数运算--快速幂 | 统计好数字的数目
快速幂算法是一种高效计算大数幂运算的方法,能将时间复杂度从传统算法的O(n)降低到O(log n)。它的核心思想是 分解指数分治思想,类似生活中的「拆快递」—— 把大包裹拆成小份,分批处理更高效。 一、生活示例:存钱罐的复利计算 假…...
Linux内存管理架构(2)
4.虚拟地址空间布局 4.1虚拟地址空间划分 对于64位处理器,目前不支持完全的64位虚拟地址 1.ARM64内核/用户虚拟地址划分 1. 虚拟地址的最大宽度 最大宽度:虚拟地址的最大宽度是48位。 内核虚拟地址: 在64位地址空间的顶部。高16位全是1。范围…...
图论基础理论
在我看来,想要掌握图的基础应用,仅需要三步走。 什么是图(基本概念)、图的构造(打地基)、图的遍历方式(应用的基础) 只要能OK的掌握这三步、就算图论入门了!࿰…...
最大子序和问题——动态规划/贪心算法解决
目录 一:问题描述 二:解决思路1——动态规划思想 三:C 语言代码实现 四:复杂度分析 五:解决思路2——贪心算法思想 六:具体步骤 七: C语言代码实现 八:复杂度分析 一:问题描述 …...
车载以太网-SOMEIP
文章目录 基本概念SOME/IP的起源与核心定位核心定位设计目标协议栈架构与OSI模型映射报文结构与数据序列化SOME/IP的核心通信机制通信模式分类服务发现协议(SOME/IP-SD)服务发现流程服务质量(QoS)管理SOME/IP在智能汽车中的典型应用SOME/IP测试与验证体系SOME/IP测试环境构…...
DrissionPage详细教程
1. 基本概述 DrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能像requests一样收发数据包,更重要的是还能把两者合二为一。因此,简单来说DrissionPage可兼顾浏览器自动化的便利性和 requests 的高效率。 DrissionPa…...
6.1 GitHub亿级数据采集实战:双通道架构+三级容灾设计,破解API限制与反爬难题
GitHub 项目数据获取功能设计与实现 关键词:GitHub API 集成、网页爬虫开发、数据存储设计、定时任务调度、异常处理机制 1. 数据获取架构设计 采用双通道数据采集策略,同时使用 GitHub 官方 API 和网页爬虫技术确保数据完整性: #mermaid-svg-XUg7xhHrzFAozG4J {font-fami…...
LabVIEW 控制电机需注意的关键问题
在自动化控制系统中,LabVIEW 作为图形化编程平台,因其高度可视化、易于集成硬件等优势,被广泛应用于电机控制场景。然而,要实现稳定、精确、高效的电机控制,仅有软件并不足够,还需结合硬件选型、控制逻辑设…...
Linux系统远程操作和程序编译
目录 一、Linux远程终端登录、图形桌面访问、 X图形窗口访问和FTP文件传输操作 1.1 桥接模式 1.2 putty远程登录Ubuntu 1.3 win10远程登录并上传下载文件 1.4 X server仿真软件安装 1.5 树莓派在putty上的远程登录 1.6 使用ftp远程登录并实现文件上传下载 1.7 Linux下的…...
Mac配置开发环境
博主是一名Python后端开发,有时候环境太多 需要配置太多,故做此文章 环境Macbook ,请注意自己的是ARM 还是x86 结构 Vscode/Cursor配置Python debug 配置Debug launch.json {"version": "0.2.0","configuratio…...
LabVIEW配电器自动测试系统
随着航天技术的迅猛发展,航天器供配电系统的结构越来越复杂,对配电器的功能完整性、稳定性和可靠性提出了更高要求。传统人工测试方式难以满足高效率、高精度、可重复的测试需求。本项目开发了一套基于LabVIEW平台的宇航配电器自动测试系统,融…...
生成与强化学习:赋予VLA系统物理行动能力
引言:从“理解世界”到“改变世界” 当机器能够“看懂”图像、“听懂”指令时,一个更根本的挑战浮现:如何让它们像人类一样,将认知转化为精准的物理动作?无论是机械臂抓取杯子,还是自动驾驶汽车紧急避障&a…...
基于Springboot+Mysql的闲一品(含LW+PPT+源码+系统演示视频+安装说明)
系统功能 管理员功能:首页、个人中心、用户管理、零食分类管理、零食信息管理、订单评价管理、系统管理、订单管理。用户功能:首页、个人中心、订单评价管理、我的收藏管理、订单管理。前台首页功能:首页、零食信息、零食资讯、个人中心、后…...
jupyter4.4安装使用
一、chrome谷歌浏览器 1. 安装 1.1 下载地址: 下载地址: https://www.google.cn/intl/zh-CN_ALL/chrome/fallback/ 2 插件markdown-viewer 2.1 下载地址: 下载地址:https://github.com/simov/markdown-viewer/releases 2.2…...
Linux虚拟内存详解
引言 虚拟内存是现代操作系统中的核心概念之一,它为进程提供了一个连续的、独立的地址空间,有效解决了物理内存限制问题,并大大简化了程序开发和执行。本文将深入探讨Linux系统中虚拟内存的工作原理、实现机制以及相关的内存管理技术&#x…...
数据库安装(基于Linux下centos7)(保姆级教程)
前言:笔者有段时间没写博客了,今天笔者要分享新的知识了,那就是数据库,笔者会通过博客系统的且通俗易懂的分享数据库知识,对于想要学习数据库和学习过数据库的老铁复习都是非常有用的,绝对干货满满,那么今天…...
【自动驾驶 机器人】速度规划 |梯形/S型速度曲线
参考文章: (1)【自动驾驶】运动规划丨速度规划丨T型/S型速度曲线 (2)一文教你快速搞懂速度曲线规划之S形曲线(超详细图文推导附件代码) 1 梯形速度曲线 如下图所示梯形速度/加速度/加加速度曲…...
Qt C++内存泄漏排查方法
在Qt C++中排查内存泄漏可以按照以下步骤进行,结合工具使用和代码审查: 1. 使用内存检测工具 Valgrind (Linux/macOS) 安装Valgrind:sudo apt-get install valgrind运行程序并检测内存泄漏:valgrind --leak-check=full ./your_qt_app分析输出结果,定位未释放的内存块。Dr…...
[redis进阶一]redis的持久化(2)AOF篇章
目录 一 为什么有了RDB持久化机制还要有AOF呢 板书介绍具体原因: 编辑二 详细讲解AOF机制 (1)AOF的基本使用 1)板书如下 2)开启AOF机制: 3) AOF工作流程 (2)AOF是否会影响到redis性能 编辑 (3)AOF缓冲区刷新策略 (4)AOF的重写机制 板书如下: 为什么要有这个重写机…...
聊天室项目day4(redis实现验证码期限,实现redis连接池)
1.redis连接池操作和之前所学过的io_context连接池原理一样这里不多赘述,也是创建多个连接,使用时按顺序取出来。 2.知识补充redisConnect()函数建立与 Redis 服务器的非阻塞网络连接,成功返回 redisContext*(连接上下文指针&…...
Redis之分布式锁
面试切入点 锁的分类 单机版同一个JVM虚拟机内,synchronized或者Lock接口分布式多个不同JVM虚拟机,单机的线程锁不再起作用,资源类在不同的服务器之间共享了 一个靠谱分布式锁需要具备的条件与刚需 独占性:onlyOneÿ…...
AF3 ProteinDataset类的__getitem__方法解读
AlphaFold3 protein_dataset 模块 ProteinDataset 类 __getitem__ 方法用于从数据集中获取一个条目,并根据配置对数据进行处理。 源代码: def __getitem__(self, idx):"""Return an entry from the dataset.If a clusters file is provided, then the idx i…...
NLP 梳理02 — 标点符号和大小写
文章目录 一、说明二、为什么文本预处理中需要小写2.1 为什么小写在文本预处理中至关重要?2.2 区分大小写对 NLP 任务的影响 三、删除标点符号及其对 NLP 任务的影响3.1 什么是标点符号?3.2 为什么在文本预处理中删除标点符号?3.3 删除标点符…...
HarmonyOS中的多线程并发机制
目录 多线程并发1. 多线程并发概述2 多线程并发模型3 TaskPool简介4 Worker简介4.1 Woker注意事项4.2 Woker基本用法示例 5. TaskPool和Worker的对比5.1 实现特点对比5.2 适用场景对比 多线程并发 1. 多线程并发概述 并发模型是用来实现不同应用场景中并发任务的编程模型&…...
游戏引擎学习第221天:(实现多层次过场动画)
资产: intro_art.hha 已发布 在下载页面,你会看到一个新的艺术包。你将需要这个艺术包来进行接下来的开发工作。这个艺术包是由一位艺术家精心制作并打包成我们设计的格式,旨在将这些艺术资源直接应用到游戏中。它包含了许多我们会在接下来的直播中使用…...
Python | 在Pandas中按照中值对箱形图排序
箱形图是可视化数据分布的强大工具,因为它们提供了对数据集内的散布、四分位数和离群值的洞察。然而,当处理多个组或类别时,通过特定的测量(如中位数)对箱形图进行排序可以提高清晰度并有助于揭示模式。在本文中&#…...
openapi + knife4j的使用
一、依赖作用与关系 1. springdoc-openapi-starter-webmvc-api • 核心功能: 基于 OpenAPI 3 规范,自动生成 API 文档元数据(JSON 格式),并集成 Spring MVC。 提供Tag Operation、Schema 等注解,支持通过…...
数据结构*包装类泛型
包装类 什么是包装类 在讲基本数据类型的时候,有提到过包装类。 基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean 我们知道:基本数据类型并不是对象,没有对象所具有的方法和属…...
Azure Synapse Dedicated SQL pool里大型表对大型表分批合并数据的策略
Azure Synapse Dedicated SQL pool中大型表的数据通过MERGE INTO语句合并到另一张大型表的时间很长,容易造成运行超时,而有的时候超时的时间是管理设置,由客户控制,无法修改。这种时候为了确保操作可以运行成功,需要将…...
Day81 | 灵神 | 快慢指针 链表的中间结点 环形链表
Day81 | 灵神 | 快慢指针 链表的中间结点 环形链表 876.链表的中间结点 876. 链表的中间结点 - 力扣(LeetCode) 思路: 设置两个指针,一个快指针r一个慢指针l 初始都是头结点 我们要求的是中间节点 所以快指针走两步&#x…...
【DDR 内存学习专栏 1.2 -- DDR Channel 介绍】
文章目录 1. DDR中的通道(Channel)概念1.1 DDR Channel 与 DDRC1.2 DIMM 内存插槽1.3 物理通道的定义1.3.1 多通道的作用 1.4 通道的硬件实现1.5 多核系统的DDR通道分配策略 1. DDR中的通道(Channel)概念 关于 DDR 通道ÿ…...
深入解析xDeepFM:结合压缩交互网络与深度神经网络的推荐系统新突破
今天是周日,我来解读一篇有趣的文章——xDeepFM。这篇文章由 Mao et al. 发表在SIGIR 2019会议。文章提出了一个新的网络模型——压缩交互网络(CIN),用于显式地学习高阶特征交互。通过结合 CIN 和传统的深度神经网络(D…...
Mybatis 中 <mappers> 标签四种配置方式
在MyBatis中,我们可以通过四种不同的方式来配置Mappers标签 : 1. 使用 <package name=""> 批量扫描包 这种方式通过指定一个包名,MyBatis 会自动扫描该包下的所有接口并注册为映射器。 <mappers><package name="com.example.mapper"/&…...
科技赋能记忆共生-郑州
故事背景 故事发生在中国河南郑州的现代城市环境中,这里描绘了人与科技的交融与共生。多样的场景展示了人与自然、历史与未来的互动,通过各种科技手段与古老文化相结合,展现出未来城市的独特魅力。 故事内容 在中国河南郑州,一座科…...
根据开始日期和结束日志统计共有多少天和每天的营业额
controller 重点:根据时间格式接受时间类型参数 DateTimeFormat(pattern "yyyy-MM-dd") LocalDateTime begin, DateTimeFormat(pattern "yyyy-MM-dd") LocalDateTime end) RestController RequestMapping("/admin/report") Slf4…...
LLMs之Agent之A2A:A2A的简介、安装和使用方法、案例应用之详细攻略
LLMs之Agent之A2A:A2A的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之Agent之A2A:《Announcing the Agent2Agent Protocol (A2A)》翻译与解读 LLMs之Agent之A2A:A2A的简介、安装和使用方法、案例应用之详细攻略 A2A协议…...
深入学习OpenCV:第一章简介
本专栏为零基础开发者打造,聚焦OpenCV在Python中的高效应用,用100%代码实践带你玩转图像处理! 从 环境配置到实战项目,内容涵盖: 1️⃣ 基础篇:图像读写、阈值处理、色彩空间转换 2️⃣ 进阶篇ÿ…...