BERTective: Language Models and Contextual Information for Deception Detection
目录
概要
实验设置
数据集
实验条件
指标和基准
实验方法
神经网络基准
基于transformer的模型
基于BERT的模型
实验结果
分析
非上下文化模型
上下文化模型
欺骗语言
讨论
结论
概要
本文基于一组包含虚假陈述的意大利对话语料库,建立了一种新的最先进的欺骗识别方法,并发现并非所有上下文对这一任务都是同样有用的。只有当文本来自同一说话者时,离目标文本最近的上下文(而不是对话者的提问)才能提升性能。作者还发现,像BERT这样的语言模型中的语义信息对性能有贡献。然而,单独使用BERT并不能捕捉到欺骗线索的隐含知识:其贡献依赖于同时使用注意力机制来从BERT的表示中学习线索。
实验设置
数据集
DECOUR数据集:包括意大利法院举行的35次刑事诉讼听证会的法庭数据记录。这为真实的欺骗数据提供了独特的来源。语料库是意大利语的。它由被访者和一些采访者(如法官、检察官、律师)之间的对话组成。每个对话都包含不同说话人的话语序列。这些话语被称为转折(turns)。根据定义,相邻的回合来自不同的说话者。每个回合包含一个或多个话语(utterances)。受访者的每句话都被标记为“真”、“假”或“不确定”,其他说话者的话语没有标记。
实验条件
本文使用二元分类(虚假陈述与非虚假陈述类别),为了避免在同一听证会的发言上过拟合训练和测试,采用了留一交叉验证的方法,每个折叠构成一个听证会。在这些设置中,每个折叠中一个听证会用作测试集,一个用作开发集,其余的用作训练集。作者为每个折叠进行了五个训练周期,选择在开发集上具有最佳F-score的模型。还识别了七种不同的上下文,这些上下文应该有助于分类任务,连同目标发言。它们如下:
- 前一个发言 - 1prev。考虑目标之前的第一个发言,无论发言者是谁。
- 前两个发言 - 2prev。与上述相同,但这里收集目标之前的前两个句子。
- 前三个发言 - 3prev。在这种情况下,收集前三个发言,同样不考虑发言者。
- 发言者的前一个发言 - s-utt。在这种情况下仅考虑目标之前的发言,如果发言者是同一位受访者。如果另一个发言者发出了前一个发言,则不收集该发言,目标发言将没有上下文。
- 发言者的前几个发言 - s-utts。与前一种情况类似,仅收集受访者的发言,但如果目标发言之前有多个发言(在同轮次内),则全部收集。换句话说,收集本目标在该轮次的所有发言。
- 发言者的前几个发言 + 轮次 - s-utturn。考虑所有可能的发言者发言和前一个轮次,该轮次属于另一个发言者。如果没有前一个发言者的发言,我们仅收集前一个轮次。这将使该实例等同于根据最后一种条件创建的实例。
- 前一个轮次 - turn。收集整个前一个轮次,这是唯一上下文不是由受访者自己产生的情况。
对话示例
A: “我觉得这个计划很有前景。”
B: “但是我们需要更多的数据支持。”
A: “我们可以考虑不同的方案。”
B: “我同意,但时间紧迫。”
A: “那么我们应该尽快行动。”
B: “是的,时间不等人。”
A: “我会准备一个详细的提案。”
目标发言是A的“我会准备一个详细的提案。” | |
1prev | B的“是的,时间不等人。” |
2prev | B的“是的,时间不等人。”和A的“那么我们应该尽快行动。” |
3prev | B的“是的,时间不等人。”和A的“那么我们应该尽快行动。和B的 “我同意,但时间紧迫。” |
s-utt | A的“那么我们应该尽快行动。” |
s-utts | A的“那么我们应该尽快行动。” |
s-utturn | A 的“那么我们应该尽快行动。”和B的 “是的,时间不等人。” |
turn | B的 “是的,时间不等人。”和A的 “那么我们应该尽快行动。”和B的 “我同意,但时间紧迫。” |
指标和基准
使用四个指标来评估模型:准确率、精确率、召回率和F-measure。
虽然准确率是一个标准指标,但当数据集不平衡且关注的类别是少数类时,由于其信息量有限,主要类别的表现很容易掩盖了少数类别的真实表现。即便如此,准确率仍然是一个具有挑战性的基准,因为简单的启发式方法(例如总是预测主要类别)会导致较高的准确率。在DECOUR中,非虚假发言是主要类别,占实例的68.66%。因此,这就是预测主要类别时所获得的准确率。将这种主要类别的预测作为基准。
对于模型的整体评估依赖于F-measure,它反映了模型在两个类别中正确预测的平衡能力。除了主要类别的预测(其F-measure为40.71),作者还将模型与之前的最新技术进行比较。使用Fornaciari和Poesio(2013)提供的F-measure最高性能。在该实验中,联合使用了词袋(Bag-Of-Words,BOW)特征和LIWC(Pennebaker等,2001)提供的词汇特征,并应用了支持向量机(SVM)分类器(Drucker等,1997)。该模型的准确率为70.18%,F-measure为62.98。
实验方法
本文使用多种神经模型进行分类。对于所有不依赖于BERT上下文嵌入的模型,使用预训练的Fast Text嵌入(Joulin等,2016)作为初始化权重,并在训练过程中对其进行了微调。由于计算负担的原因没有微调上下文BERT嵌入。然而,模型参数的高数量要求使用较低的学习率,作者手动将其调整为1.e−4,并使用小批量大小,设置为8。丢弃率为0.1。
神经网络基准
作者添加了两个神经网络基准:多层感知器(MLP)和卷积神经网络(CNN)。
MLP的表现未能超越SVM。CNN的F-measure优于SVM,但差异不显著。此外,CNN的效果也不如那些未利用上下文信息的基于注意力的模型。因此,作者没有为MLP和CNN提供上下文信息,而是将它们作为额外的神经网络基准。然而,为了获得它们可能的最佳性能,作者进行了全面的超参数搜索。对于MLP,实验发现使用可训练的FastText嵌入和两个隐藏层的组合效果最佳。对于CNN,使用了3个卷积-最大池化层,分别具有32、64和128个通道,窗口大小为2、4和6。
基于transformer的模型
作者创建了两种模型:层次模型和非层次模型。采用非层次结构分析目标句子,并实现了层次transformer以共同编码目标句子和上下文信息。在层次模型中,输入不是单个发言,而是一系列发言。最大句子数设置为5。这个限制能够收集约98% DECOUR中的所有轮次的完整文本。然而,考虑更广泛的上下文并没有带来帮助。
不考虑批量,层次transformer的输入是一个三维张量,表示[文档、单词和嵌入]。每个单词-嵌入矩阵被传递给一个多层、多头的transformer,该transformer提供每个发言的表示,并返回与输入相同形状的张量作为输出。接下来的全连接层减少了嵌入的维度。文档的表示随后被连接成一个二维张量,并传递给另一个多层、多头的transformer,该transformer提供整体文档表示。另一个全连接层用于减少张量的最后维度,然后将其重塑为行向量。这个向量被输入到最后一个全连接层中,以提供预测,上图展示了这样的架构。
使用层次transformer,对七种上下文进行了实验。同样调整了超参数。在层次模型中,在发言和文档级别的编码器中使用了六层和六个头的transformer。对于非层次模型,两个层和两个头就足以获得最佳的开发集结果。
基于BERT的模型
最后,使用意大利语的BERT基础模型进行分类。本文设置了三种模型:
BERT + 全连接层
这是最简单的网络,仅用于对目标发言进行预测。将BERT的均值池化输出输入到一个全连接层中,该层执行预测。
BERT + transformer
这是一个更具表现力的网络,其中BERT的输出被传递到一个多层、多头的transformer。transformer的表示随后被传递到一个全连接层,该层输出预测。我们采用了六层和六个头的transformer,类似于层次transformer模型。与BERT + 全连接层模型类似,仅将目标句子输入到该网络中。
文本对BERT + transformer
最后一个网络在结构上与前一个相同,但在这种情况下使用BERT的文本对模式。将目标句子的大小设置为100个单词,上下文设置为400个单词。上下文是所选文本的连接,填充或截断在开头。如果截断,只会失去距离目标句子最远的文本部分。然而,语料库大多包含简短的陈述:填充到100和400保证了最小的数据损失。使用这个模型,作者测试了上述七种上下文。
实验结果
结果见下表。
- 第一组实验包含文献中的基准和简单神经网络。
- 第二组和第三组分别展示了基于transformer和基于BERT的模型。
实验报告了准确率、精确率、召回率和F-measure。作为显著性检验的基准,使用Fornaciari和Poesio(2013)提供的文献基准。*表示显著性水平,通过自抽样计算得出,p ≤ 0.05和p ≤ 0.01。根据Søgaard等(2014)的建议,避免使用过小的样本量,将样本设置为语料库的50%。
分析
结果显示,SVM的表现是一个强有力的基准。只有少数模型超越了它的准确率,而且没有显著提高。精确率也是如此。召回率是大多数神经网络模型超越SVM的指标(在五个案例中显著),尽管它们付出的代价是预测的精确率较低。因此,在16个基于transformer和BERT的模型中,只有四个模型的F-measure显著优于SVM,这对应于召回率的显著提升和更好的准确率,尽管后者并不显著。
非上下文化模型
两个最佳模型仅考虑目标句子:非层次transformer和使用BERT进行单文本处理的模型,后者采用了transformer架构。尽管在超参数探索中付出了努力,包括使用非常低的学习率和正则化方法(如丢弃法),但仍然无法防止该模型在低性能水平上出现强烈的早期过拟合。似乎单个全连接层无法处理此任务的复杂性
上下文化模型
上下文化模型在基于transformer和基于BERT的模型中显示出类似的趋势。这些趋势在BERT模型中更为明显,并导致更高的性能,但在层次transformer中也可见。层次transformer的F-measure都不优于非层次transformer模型,尽管它们的表现优于SVM基准,但并不显著。
作者还观察到,当上下文从一个发言扩展到三个发言时,模型的性能缓慢下降:三种条件下的F-measure下降趋势甚至比层次变换器的情况更为明显。
欺骗语言
作者采用两种方法来描绘欺骗语言:
- 1)计算词n-gram的信息增益(Information Gain,IG)(Forman,2003)
- 2)应用采样和遮蔽(Sampling and Occlusion,SOC)算法(Jin等,2019)。
信息增益衡量不同类别之间(序列)术语的熵。某一标签类别中术语的存在越不平衡,越以另一类别为代价,其IG值就越高。
上表显示了具有最高IG值的三元组,按其所指示的类别进行分类,即它们出现得更频繁的类别。
这些n-gram显示,欺骗性陈述充满了否定词:主要是“不记得”,但也包括“不知道”和“没有做”。相比之下,真实的陈述往往更具肯定性,专注于时间和环境的具体细节。
IG信号的强度还表明,真诚的表达比欺骗的表达要多样得多,后者则更常重复,似乎特别刻板。 尽管神经模型检测到的模式不一定能用人类常识来解释,我们仍然使用SOC来突出模型认为对其输出最具影响力的词汇。SOC通过考虑在将每个词替换为MASK标记后预测的差异,提供了对句子中特定词在分类任务中权重的事后解释(Jin等,2019)。由于结果依赖于上下文词汇,但Jin等(2019)关注的是单个词的相关性,因此他们并不使用整个上下文,而是从中抽样词汇。通过这种方式,他们减少了上下文的权重,强调了词本身的权重。 下图展示了两个正确分类的句子示例,一个是欺骗性的,一个是真实的。模型将红色词汇解释为欺骗的指示,蓝色词汇则表示真实性。它们与IG是一致的。然而,它们不能被解释为最复杂模型内部运作的代表,因为SOC依赖于标准的基于BERT的分类器。
讨论
1.基于变换器的模型在分类任务中表现良好,尤其是非层次模型优于以往的技术;
2.基于BERT的模型表现差异明显,其中单文本BERT和简单密集输出层的性能较差,但替换为多层、多头变换器后性能显著提高。
3.同时,文本对BERT与变换器结合的实验结果最好。
这些结果表明:
- BERT模型本身缺乏检测欺骗所需的知识,因为其单个全连接层无法处理任务的复杂性;
- 然而,当与transformer等专门架构结合时,BERT的知识可以提升模型性能。
- 缺乏上下文知识时,模型可能会高估来自上下文的风格特征,
- 因此BERT的上下文知识在模型中起到正则化的作用,帮助识别更复杂的模式。
结论
本文使用一个独特的数据集来探索语言模型在检测谎言方面的性能,该数据集包含来自Fornaciari和Poesio(2013)创建的真实听证会的句子,并为研究设置而匿名。实验表明,上下文是创建可以检测欺骗的模型的关键,并且带有一些额外注意层的BERT可以有效地击败不同的基线。
相关文章:
BERTective: Language Models and Contextual Information for Deception Detection
目录 概要 实验设置 数据集 实验条件 指标和基准 实验方法 神经网络基准 基于transformer的模型 基于BERT的模型 实验结果 分析 非上下文化模型 上下文化模型 欺骗语言 讨论 结论 概要 本文基于一组包含虚假陈述的意大利对话语料库,建立了一种新的…...
python 配置 oracle instant client
1.问题描述 想用python连接oracle数据库,百度得知需要cx_Oracle这个第三方库 import cx_Oracle# 设置Oracle数据源名称 dsn cx_Oracle.makedsn(host, port, service_nameservice_name)# 创建数据库连接 connection cx_Oracle.connect(userusername, passwordpas…...
【C语言】一文讲通 和*
&和*详解 前言符号 &:取地址符& 的用法& 用于函数参数传递 符号 *:解引用符* 的用法* 用于指针的初始化 结合使用 & 和 *1. * 和 & 配合使用示例 常见错误与注意事项总结 前言 在 C 语言中,* 和 & 是两个非常重…...
编译原理复习---基本概念+推导树
适用于电子科技大学编译原理期末考试复习。 本文只适合复习不适合预习,即适合上课听过一点或自己学过一点的同学。 1. 编译原理概述 编译原理是计算机科学的一个重要分支,它涉及将高级编程语言编写的源代码转换为机器能够理解和执行的低级代码的过程。…...
ThinkPHP 吸收了Java Spring框架一些特性
ThinkPHP 吸收了Java Spring框架一些特性,下面介绍如下: 1、controller 控制器层 存放控制器层的文件,用于处理请求和响应 2、model 实体类 存放实体类的文件,用于定义数据模型 3、dao DAO层 存放DAO(数据访问…...
【Java基础面试题019】什么是Java中的不可变类?
回答重点 不可变类是指在创建后无法被修改的类。一旦对象被创建,它的所有属性都不能被更改。这种类的实例在整个生命周期内保持不变。 关键特征: 声明类为final,防止子类继承类的所有字段都是private和final,确保它们在初始化后…...
JAVA开发时获取用户信息失败,分析后端日志信息
从日志信息(见文章最后)来看,JWT 认证过程似乎是成功的。具体来说,以下几点表明认证流程正常: Token 解析成功: 日志显示 Parsing token: eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjEsImV4cCI6MTczNDM2MzUwMH0.jQtaj1sTBCMh…...
Docker 安装 禅道-21.2版本-外部数据库模式
Docker 安装系列 1、拉取最新版本(zentao 21.2) [rootTseng ~]# docker pull hub.zentao.net/app/zentao Using default tag: latest latest: Pulling from app/zentao 55ab1b300d4b: Pull complete 6b5749e5ef1d: Pull complete bdccb03403c1: Pul…...
如何写好一份技术文档?
技术文档是传递技术信息、指导用户操作的重要工具。一份高质量的技术文档不仅能帮助用户快速理解和使用技术产品,还能减少后续的维护和支持成本。本文将详细介绍如何撰写一份优秀的技术文档。 一、明确目标受众 在开始撰写技术文档之前,首先要明确目标受…...
常用es命令
常用Elasticsearch命令 es别名链接和删除 POST /_aliases {"actions": [{"add": {"index": "index","alias": "alias"}},{"remove": {"index": "index","alias": &quo…...
AI大模型进一步推动了AI在处理图片、视频、音频、文本的等数据应用
AI处理图片、视频、音频、文本等数据应用一直都存在,但是大模型的出现让AI处理这些数据更加便捷快速。比如在安防的框选标记物,以前要在图像上框,现在用文字描述再让大模型处理成图片框就可以完成框选了。大模型正在二次加速AI处理。 随着AI…...
【MambaSR复现】【Windows系统下Mamba环境配置】triton 、causal conv1d和mamba_ssm模块配置保姆教程
注:在此之前确保环境中已经安装packaging模块 pip install packaging若此模块安装过程中出现图下报错:这是由于环境创建时候的权限问题导致的,具体解决方案见我另一篇博文! 1.Triton模块安装 注意:必须先安装triton&…...
前景物体提取
参考:精选课:C完整的实现双目摄像头图像采集、双目摄像头畸变矫正、前景物体提取、生成视差图、深度图、PCL点云图 前景物体提取是计算机视觉中的一个重要技术,可以用于视频监控、虚拟现实和计算机视觉等领域。 1.前景物体提取的原理 前景…...
【考前预习】4.计算机网络—网络层
往期推荐 【考前预习】3.计算机网络—数据链路层-CSDN博客 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 目录 1.网络层概述 2.网络层提供的两种服务 3.分类编址的IPV4 4.无分类编址的IPV4—CIDR 5.IPV4地址应用规划 5.1使用定长子…...
浙江省一体化数字资源系统(IRS)介绍(七个方面展开)
浙江IRS的主要做法包括“六个一”,即一本账管理、一站式浏览、一揽子申请、一体化生产、一平台调度、一张网管控。本期分享在2023年数字政府评估大会上,浙江省大数据相关老师发表的“打造一体化数字资源系统(IRS),赋能…...
Spring实例化的基本流程和Bean处理器
目录 Spring实例化的基本流程 Bean的处理器 Bean工厂后处理器(BeanFactoryPostProcessor) 动态注册beanDefinition Bean后处理器(BeanPostProcessor) Spring实例化的基本流程 在了解处理器之前,要清除spring实例化…...
对分布式系统的理解以及redis的分布式实现
对分布式系统有哪些了解? 分布式系统是由多个独立的计算节点(通常是计算机或服务器)组成的系统,这些节点通过网络相互通信和协作,共同完成任务。分布式系统的设计旨在提供可扩展性、容错性和高可用性,适用于大规模的数据处理和服务场景。 1. 分布式系统的核心特点 分布…...
torch.multiprocessing 向Process传递对象参数报错 Can‘t pickle local object
如下代码所示,使用torch.multiprocessing启动多进程,并传递了model和image_processor两个对象作为参数。 from torch.multiprocessing import Process, Queue, Manager...p3 Process(targetframe_memory_manager,args(model, image_processor, frame_q…...
Day9 神经网络的偏导数基础
多变量函数与神经网络 在神经网络中,我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如,一个简单的神经元输出可以表示为: z f ( w 1 x 1 w 2 x 2 … w n x n b ) z f(w_1x_1 w_2x_2 \ldots…...
[c++11(二)]Lambda表达式和Function包装器及bind函数
1.前言 Lambda表达式着重解决的是在某种场景下使用仿函数困难的问题,而function着重解决的是函数指针的问题,它能够将其简单化。 本章重点: 本章将着重讲解lambda表达式的规则和使用场景,以及function的使用场景及bind函数的相关使…...
22智能 狄克斯特拉算法复习
狄克斯特拉算法 图 根据边有无方向分为: 有向图、无向图 根据边有无权重变量分为: 有权图、无权图 根据顶点是否连通分为: 连通图和非连通图入度:表示有多少条边指向该顶点出度:表示有多少条边从该顶点指出算法步骤&a…...
Electronjs+Vue如何开发PC桌面客户端(Windows,Mac,Linux)
electronjs官网 https://www.electronjs.org/zh/ Electron开发PC桌面客户端的技术选型非常适合已经有web前端开发人员的团队。能够很丝滑的过渡。 Electron是什么? Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.…...
C语言编程1.27汉诺塔
题目描述 给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上。现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面。 输入格式 输入由四行: 第一行…...
UG NX二次开发(C#)-机电概念设计-UIStyler中selection块选择信号等对象的过滤器设置
文章目录 1、前言2、创建机电概念设计的模型3、创建UIStyler4、在VS2022中创建NXOPEN CSHAP的工程5、设置信号与信号适配体的过滤器6、测试选择的对象1、前言 在UG NX二次开发过程中,经常会用到UIStyler中的Selection块,即是选择对象,选择对象由于其可以选择多种类型的对象…...
【C++】C++中的lambda函数详解
C中的lambda函数是一种匿名函数,它允许你在代码中直接定义一个函数对象,而不需要提前声明一个函数名。Lambda函数通常用于编写简短的函数,这些函数可能只会被调用一次或者在某些特定的上下文中使用。 Lambda函数的基本语法如下: …...
JS CSS HTML 的代码如何快速封装
我们为什么要封装代码,是因为封装后的代码,会显得非常美观,减少代码的复用,方便我们更好的去维护代码,不用一个一个页面的去找去改,直接封装好的代码里面去改就可以了 目录 1.html代码封装 2.CSS代码封装…...
矩阵运算的复杂度分析(Complexity Analysis of Matrix Operations):中英双语
矩阵运算的复杂度分析 矩阵运算在科学计算、机器学习、图像处理等领域中起着至关重要的作用。了解各种常见矩阵运算的复杂度,对于优化算法、提高计算效率具有重要意义。在这篇博客中,我们将详细探讨矩阵加法、标量乘法、矩阵转置、矩阵-向量乘法等基本矩…...
第二十四天 循环神经网络(RNN)LSTM与GRU
LSTM(长短期记忆网络)和GRU(门控循环单元)是两种流行的循环神经网络变体,它们被设计来解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。这两种网络都通过引入门控机制来控制信息的流动,从而能…...
RTC实时时钟
BKP(备份寄存器) 1. 什么是BKP? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电 源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒ÿ…...
移动网络(2,3,4,5G)设备TCP通讯调试方法
背景: 当设备是移动网络设备连接云平台的时候,如果服务器没有收到网络数据,移动物联设备发送不知道有没有有丢失数据的时候,需要一个抓取设备出来的数据和服务器下发的数据的方法。 1.服务器系统是很成熟的,一般是linu…...
项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
资料查找: 01 方案选择 使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理: 串联分压法(ADC) 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出…...
如何使用checkBox组件实现复选框
文章目录 概念介绍使用方法示例代码我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍Checkbox Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的Checkbox也是叫复选框,没有选中时是一个正方形边框,边框内容是空白的,选中时会…...
用bootstrap搭建侧边栏
要注意: 标签的id"v-pills-dataset1-tab"要和跳转内容的aria-labelledby"v-pills-dataset1-tab"一致 标签的aria-controls"v-pills-dataset1"要和跳转内容的id"v-pills-dataset1"一致 <!-- 左边的列(侧边栏…...
手眼标定工具操作文档
1.手眼标定原理介绍 术语介绍 手眼标定:为了获取相机与机器人坐标系之间得位姿转换关系,需要对相机和机器人坐标系进行标定,该标定过程成为手眼标定,用于存储这一组转换关系的文件称为手眼标定文件。 ETH:即Eye To …...
巧记斜边函数hypot
hypot是一个数学函数,源于英文"hypotenuse(斜边)",hypot(a, b)返回直角边边长为a、b的直角三角形(right-angled triangle)的斜边长度。该函数定义在<math.h>头文件中,其功能相当…...
STM32单片机芯片与内部33 ADC 单通道连续DMA
目录 一、ADC DMA配置——标准库 1、ADC配置 2、DMA配置 二、ADC DMA配置——HAL库 1、ADC配置 2、DMA配置 三、用户侧 1、DMA开关 (1)、标准库 (2)、HAL库 2、DMA乒乓 (1)、标准库 ÿ…...
【程序人生】掌握一门编程语言
掌握一门编程语言不仅仅是能够编写正确的语法,它还涉及到对语言特性、工具链、最佳实践以及解决问题的能力有深入的理解。以下是衡量你是否掌握了某门编程语言的关键指标: 语法与基本概念 语法熟悉度:能够在不查阅文档的情况下写出正确的代码…...
数据库发生了死锁怎么办
当项目中存在公共的数据表,比如日志表,同时存在对这张表的读写操作,或者是对数据量较大的表加索引同时伴随其他并发操作,那么这张表就有较高概率发生死锁。 现象:对于这张表的任何操作都会被阻塞,项目出现…...
传递函数的幅值在0到1之间
为什么所有传递函数的幅值应该在 0 到 1 之间 在声学、振动学和信号处理等领域,传递函数的幅值表示系统对输入信号的响应幅度。在许多声学实验中,传递函数的幅值反映了声波的传输或反射特性。理论上,所有传递函数的幅值应当在 0 到 1 之间&a…...
[Unity Shader]【图形渲染】 数学基础4 - 矩阵定义和矩阵运算详解
矩阵是计算机图形学中的重要数学工具,尤其在Shader编程中,它被广泛用于坐标变换、投影变换和模型动画等场景。本文将详细介绍矩阵的定义、基本运算以及如何在Shader中应用矩阵,为初学者打下坚实的数学基础。 一、什么是矩阵? 矩阵是一个由数字排列成的长方形数组,通常记作…...
蓝桥杯练习生第四天
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...
Jmeter压测实战:Jmeter二次开发之自定义函数
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是Apache基金会下的一款应用场景非常广的压力测试工具,具备轻量、高扩展性、分布式等特性。Jmeter已支持实现随机数、计数器、时间戳、大小写转换…...
梯度(Gradient)和 雅各比矩阵(Jacobian Matrix)的区别和联系:中英双语
雅各比矩阵与梯度:区别与联系 在数学与机器学习中,梯度(Gradient) 和 雅各比矩阵(Jacobian Matrix) 是两个核心概念。虽然它们都描述了函数的变化率,但应用场景和具体形式有所不同。本文将通过…...
[python SQLAlchemy数据库操作入门]-02.交易数据实体类建立
哈喽,大家好,我是木头左! 为了顺利地使用SQLAlchemy进行股票交易数据的处理,首先需要搭建一个合适的开发环境。这包括安装必要的软件包以及配置相关的依赖项。 安装Python及虚拟环境 下载并安装Python(推荐使用最新版)。创建一个新的虚拟环境以避免依赖冲突。python -m …...
python打包exe文件
由于用户需要,将采集数据解析成txt文件,为了方便使用,将python解析方法打包成exe文件供用户使用 安装环境 ./pip.exe install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simplepython导入需要的包 import tkinter as tk from tkin…...
C# opencvsharp 流程化-脚本化-(2)ROI
ROI ROI也是经常需要使用的方法。特别是在图像编辑中。ROI又称感兴趣的区域,但是图像是矩阵是矩形的,感兴趣的是乱八七糟的,所以还有一个Mask需要了解一下的。 public class RoiStep : IImageProcessingStep{public ImageProcessingStepType…...
【Python】基于Python的CI/CD工具链:实现自动化构建与发布
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,持续集成(CI)和持续交付(CD)已经成为提高开发效率和软件质量的重要实践。CI/CD流程帮助开发团队自动化构建、测试、…...
Flutter组件————Scaffold
Scaffold Scaffold 是一个基础的可视化界面结构组件,它实现了基本的Material Design布局结构。使用 Scaffold 可以快速地搭建起包含应用栏(AppBar)、内容区域(body)、抽屉菜单(Drawer)、底部导…...
2024年《网络安全事件应急指南》
在这个信息技术日新月异的时代,网络攻击手段的复杂性与日俱增,安全威胁层出不穷,给企事业单位的安全防护能力带 来了前所未有的挑战。深信服安全应急响应中心(以下简称“应急响应中心”)编写了《网络安全事件应急指南》…...
通过smem 定时检测系统内存占用情况
编写定时任务脚本 cat >> /usr/local/bin/smem.sh <<-"EOF"if [[ ! -d /var/log/smem ]];thenmkdir -p /var/log/smem fi smem -tk >> /var/log/smem/smem.log EOFchmod 755 /usr/local/bin/smem.sh配置定时任务 echo "" >> /et…...