基于Tucker分解的时序知识图谱补全10.23

news2024/11/18 3:28:08

基于Tucker分解的时序知识图谱补全

  • 摘要
  • 引言
  • 相关工作
    • 静态知识图谱补全
    • 时序知识图谱补全
  • 背景
  • 提出的模型
    • 学习
    • 时间复杂度和参数增长
    • 表达能力分析
  • 实验

在这里插入图片描述

摘要

知识图谱已被证明是众多智能应用的有效工具。然而,大量有价值的知识仍然隐含在知识图谱中。为了丰富现有的知识图谱,近年来许多用于链接预测和知识图谱嵌入的算法被设计出来推断新的事实。但是,这些研究大多集中在静态知识图谱上,忽略了反映知识有效性的时间信息。开发适用于时间知识图谱补全的模型是一项日益重要的任务。

本文基于四阶张量的Tucker分解 启发,构建了一个新的用于时间知识图谱补全的张量分解模型。证明了所提出的模型具有完全表达能力,并在几个公共基准测试中报告了最先进的结果。此外,提出了几种正则化方案来改进策略,并研究它们对所提出模型的影响。对三个时间数据集(即ICEWS2014,ICEWS2005-15,GDELT)进行的实验研究验证了设计,并证明该模型在链接预测任务上明显优于基准模型。

四阶张量的Tucker分解是一种将一个四阶张量表示为核心张量与三个模式矩阵相乘的分解方法。假设有一个四阶张量X,其维度为(I, J, K, L)。Tucker分解将该张量表示为以下形式:
X ( i , j , k , l ) = ∑ r = 1 R ∑ s = 1 S ∑ t = 1 T ∑ u = 1 U G ( r , s , t , u ) × A ( i , r ) × B ( j , s ) × C ( k , t ) × D ( l , u ) X(i, j, k, l) = \sum_{r=1}^{R} \sum_{s=1}^{S} \sum_{t=1}^{T} \sum_{u=1}^{U} G(r, s, t, u) \times A(i, r) \times B(j, s) \times C(k, t) \times D(l, u) X(i,j,k,l)=r=1Rs=1St=1Tu=1UG(r,s,t,u)×A(i,r)×B(j,s)×C(k,t)×D(l,u)
其中,G是核心张量,具有维度(R, S, T, U),A、B、C、D是模式矩阵,分别具有维度(I, R)、(J, S)、(K, T)、(L, U)。模式矩阵中的每个元素表示张量的某个模式(维度)与对应模式的隐含特征之间的关系。

张量分解模型是一种用于对张量数据进行分解和表示的模型。它将一个高维张量分解为多个低维张量的乘积形式,从而提取出张量中的潜在结构和特征。

引言

知识图谱(KGs)是现实世界中知识和事实的图结构表示,以三元组(主体、谓词、客体)的形式表示。KGs已被证明可用于各种下游任务,如推荐系统、问答系统和信息检索。然而,KGs中仍然存在大量隐藏的知识,即KGs中的实体之间缺少许多连接。近年来,提出了许多用于丰富KGs的KGs补全算法。作为一种代表性方法,KGs嵌入是当前研究的热点,并在KGs补全上展现了其效率和有效性。这种方法的目标是在保留图结构和知识的前提下,对KGs中的节点和关系进行建模,并学习它们的低维隐藏表示,然后将每个三元组的表示输入到评分函数中进行验证。

值得注意的是,KGs中存在两种类型的知识,一种是静态知识,另一种是时序知识。静态知识的有效性随时间不变,例如(武汉,属于城市,中国)。而时序知识可能不是普遍真实的。换句话说,时序知识只在特定的时间段或某个时间点上才是真实的。例如,(巴拉克·奥巴马,担任总统,美国)只在2008年至2016年之间为真实的,(爱因斯坦,获得奖项,诺贝尔奖)只在1922年获得。然而,大多数现有研究都集中在静态KGs上,假设KGs中的每个三元组都是普遍真实的,并忽略了反映知识有效性的时间范围。

在这项工作中,本文研究了在时序KGs上的链接预测任务,这也被称为标准的补全任务。时序KGs中的事实以(主体,谓词,客体,时间戳)的形式呈现,任务是回答查询(主体,谓词,?,时间戳)和(?,谓词,客体,时间戳)。

最近,张量分解方法已成功应用于静态知识图谱的补全。有的将Canonical Polyadic(CP)分解 和Tucker分解应用于知识图谱的补全,并将其构建为三阶张量补全问题。受到四阶张量的CP分解的启发,TNTComplex将时间知识图谱的补全问题表达为四阶张量补全问题,并提出了ComplEx在时间知识图谱补全中的扩展。实质上,CP分解是Tucker分解的一种特殊情况,而具有核张量的Tucker分解比CP分解具有更强的表达能力。此外,对于CP分解来说,计算张量的秩是一个非常困难的问题,因此TNTComplex必须花费大量精力手动选择适当的张量秩来进行时间知识图谱的补全。

Canonical Polyadic(CP),也被称为CANDECOMP/PARAFAC分解,是一种常用的张量分解模型。它用于将高阶张量分解为多个低秩矩阵的乘积形式。
CP分解的目标是将一个高阶张量X表示为一组低秩矩阵的叠加。对于一个三阶张量X,CP分解可以表示为以下形式:
X ≈ ∑_{r=1}^{R} A_{®} ⊗ B_{®} ⊗ C_{®}
其中,A_{®}、B_{®}、C_{®}是分解得到的低秩矩阵,⊗表示张量积运算。分解的结果是通过优化算法来确定每个低秩矩阵的值,使得分解的乘积逼近原始张量X。

在这项工作中,基于四阶张量的Tucker分解构建了一个TuckERT分解模型,用于时间知识图谱的补全。本质上,该工作旨在建立时间信息时间戳与三元组(主体,谓词,客体)之间的关系。具体而言,如果事实(主体,谓词,客体)成立,则支撑事实有效性的时间信息隐藏在实体或谓词中。因此,可以从三元组的实体或谓词中提取时间信息。相反,给定4元组事实,通过将时间信息与实体或谓词相关联,原本由4元组表示的时间事实现在由三元组隐式表示。然后,可以进行张量补全来实现时间知识图谱的补全任务。

与TNTComplex和Desimple 类似,在分解模型中采用了时态和非时态知识,以处理知识的多样性。
贡献如下:

  • 基于四阶张量的Tucker分解,开发了一种新的用于时间知识图谱补全的张量分解模型。
  • 提出了几种正则化方案来改进模型,并研究这些正则化对提出的模型的影响。
  • 对三个时间数据集进行实验研究,证明算法达到了最先进的性能水平。

相关工作

本节介绍了之前提出的静态和时间知识图谱补全方法,其中大多数方法都基于张量分解。

静态知识图谱补全

静态知识图谱补全方法可以广泛分为三种范式:

  1. 基于平移距离的模型,如TransE 和TransD ;
  2. 基于张量分解的方法;
  3. 基于神经网络的模型,包括ConvE和R-GCN。

特别是,由于其高效性和强大功能,张量分解在知识图谱补全中备受青睐。RESCAL是静态知识图谱补全的开创性张量分解方法,它在两个实体向量和谓词矩阵上施加了一个双线性积的得分函数。虽然该模型具有完全的表达能力,但由于谓词矩阵包含大量参数,往往容易出现过拟合问题。后来,DisMult意识到了上述缺陷,并通过对谓词矩阵进行对角化简化了RESCAL。然而,这也带来了一个问题,即对角谓词矩阵只能模拟对称关系而无法模拟非对称关系。为了解决这个问题,ComplEx将实体和谓词嵌入投影到复数空间中,以更好地建模非对称关系。从另一个角度来看,HoLE将循环相关操作应用于主体和客体实体向量,以获得一个组合向量,然后将其与谓词向量匹配以评分事实,从而使模型吸收了RESCAL和DisMult的优点。上述基于CP张量分解的方法独立地学习主体和客体实体的表示,这也是导致链接预测效果不佳的主要原因。鉴于此,SimplE提出了一种利用谓词的逆来解决这个障碍的新的CP方法。除了基于CP分解的方法外,基于Tucker分解的TuckER将知识图谱补全构建为一个三阶二值张量补全问题,并将已知事实的二值张量分解为核张量和三个正交矩阵。

时序知识图谱补全

大多数静态补全模型在学习知识图谱元素的嵌入时未考虑时间维度。时序知识图谱补全仍然是一个有价值但很少研究的问题,在近年来只有少数几个时间知识图谱补全模型被提出。
t-TransE: 为了模拟相邻事实的时间感知谓词之间的转换,t-TransE对嵌入空间的几何结构施加了时间顺序约束,以使嵌入在时间上保持一致且更准确。然后,t-TransE优化由时间顺序约束和TransE模型组成的联合模型,使嵌入空间与观察到的事实维度相兼容。
HyTE: 受到TransH的启发,HyTE通过将实体和谓词投影到由时间信息建模的超平面上,将时间信息与实体和谓词关联起来。然后,HyTE通过最小化平移距离来完成实体和谓词的嵌入学习,其中包含了时间信息。
TA-DistMult: 为了融入时间信息,TA-DistMult利用循环神经网络学习谓词的时间感知表示,然后在DistMult和TransE中利用该表示。
ConT: 为了模拟认知功能,该工作将几种静态知识图谱方法(包括Tucker和RESCAL)推广到时间/情节知识图谱。Tree和ConT是对RESCAL的情节张量的新颖泛化,而ConT通过引入时间的潜在表示来获得全面的性能,在稀疏的情节张量上表现出色。
DE-SimplE: 受到历时词嵌入的启发,DE-SimplE将历时实体嵌入函数与静态模型SimplE相结合,能够指导模型学习实体在任意时间点上的时间特征,用于时间知识图谱补全。
TNTComplEx: 受到四阶张量的规范分解的启发,TNTComplEx引入了ComplEx的扩展来进行时间知识图谱补全。虽然TNTComplEx取得了相当好的性能,但很难准确确定张量的秩。

所有上述的时间方法都将时间信息与实体和/或谓词相关联,以获得时间嵌入,然后将嵌入与静态模型结合用于时间知识图谱补全。与此一致,本文提出了一个用于时序知识图谱补全的四阶张量的Tucker分解,并从不同方面引入了几种正则化约束来协调所提出的分解。
实验证明,该算法达到了最先进的性能水平。

背景

CP分解将一个张量分解为一组分量秩为一的张量之和。而Tucker分解是高阶PCA的一种形式,它将一个张量分解为一个核心张量乘以沿每个模式的矩阵。具体而言,给定一个张量X ∈ Rn1×n2×n3,Tucker分解可以沿着三个模式对X进行分解,得到核心张量G和三个矩阵A,B,C:
在这里插入图片描述
其中◦表示向量外积。核心张量G ∈ Rr1×r2×r3可以捕捉不同组件之间的交互信息。每个模式中的矩阵A ∈ Rn1×r1,B ∈ Rn2×r2,C ∈ Rn3×r3彼此正交。×n表示沿第n个模式的张量乘积。此外,如果核心张量是超对角的且满足r1 = r2 = r3,则Tucker分解等价于CP分解。

后来,TuckER采用这种类型的分解进行知识图谱补全,将矩阵A和C视为实体嵌入E,E = A = C ∈ Rne×de,其中ne表示实体数量,de表示实体嵌入的维度。将B视为谓词嵌入R,R = B ∈ Rnr×dr,其中nr和dr分别表示谓词数量和谓词嵌入的维度。评分函数表示如下:
在这里插入图片描述
其中W ∈ Rde×dr×de也是核心张量,W中的参数数量仅取决于实体和谓词的嵌入维度,而不取决于实体或谓词的数量。同时,TuckER还证明基于CP分解的ComplEx是TuckER的一种特殊情况。

提出的模型

时态事实(s,r,o,t)给三元组(s,r,o)赋予一个时态标签t,以确保其准确性。时态信息隐含在正确三元组事实的实体或谓词中。例如,如果事实(Barack Obama,PresidentOf,America)是普遍真实的,那么4元组的时态元素[2008, 2016]隐含在Barack Obama的主体实体、PresidentOf的谓词或America的客体实体中。可以将上述三种情况表示为以下形式:
• (Barack Obama&[2008, 2016],PresidentOf,America):从2008年到2016年的那个时期,Barack Obama是美国总统。也就是说,三元组中的Barack Obama实体指的是2008年到2016年的那个时期的Barack Obama。
• (Barack Obama,PresidentOf&[2008, 2016],America):Barack Obama是2008年到2016年期间的美国总统。
• (Barack Obama,PresidentOf,America&[2008, 2016]):Barack Obama是2008年到2016年期间的那个美国的总统。

尽管时间戳信息强调了不同对象以分别表达它们的时态性质,但这三个事实准确地表达了相同的含义。因此,我们可以从三元组中提取时间信息T,以4元组的形式表达时间事实。同时,时间戳的嵌入维度与谓词或实体的嵌入维度相同。因此,通过添加时间信息T,TuckER分解可以自然地扩展为以下形式:
在这里插入图片描述
其中M ∈ Rde×dr×de×dt是核心张量。我们称这种分解为TuckERT,其中E表示实体,R表示谓词,T表示时间信息。给定时间事实(es,er,eo,et),TuckERT分解可以表示为以下内积形式:
在这里插入图片描述
如上面的例子所述,时间信息可以与主语、谓词或客体相关联,以获得时间相关的嵌入。此外,获得时间相关的嵌入可以视为TuckERT分解的逆过程:
在这里插入图片描述
这里,⊙表示点积,W ∈ Rde×dr×de是在维度2和4上进行折叠的版本。然后,将时态知识图谱补全视为静态方法。此外,值得注意的是,有些事实可能随时间维度而变化,而有些事实则与时间无关。如上所述,事实(Barack Obama,PresidentOf,America)只在2008年到2016年期间成立,(Einstein,WonPrize,NobelPrize)只在1922年成立。而事实(武汉,CityOf,China)的正确性随时间不变。为了建模这两种知识,时态事实和非时态事实,根据在这里插入图片描述
[7,8]提出了TuckERTNT模型,它是TuckERT的一种变体:
在这里插入图片描述
类似地,给定时间事实(es,er,eo,et),TuckERTNT分解的具体形式可以描述如下:
在这里插入图片描述
其中NT是非时态的缩写。与TNTComplEx相比,我们的模型不需要手动选择张量的秩。我们将时间信息与谓词相关联,基于Tucker分解学习时间相关的嵌入,并利用核心张量的参数来增加实体和时间相关谓词之间每个维度的交互水平,从而获得最先进的性能。此外,[6]证明了在对核心张量施加一定约束的前提下,ComplEx等价于TuckER,或者说ComplEx是TuckER的一种特殊情况。我们给出了类似的结果,即在一定约束条件下,TComplEx可以视为与TuckERT等价。

学习

采用数据增强技术,将互为谓词(对象,谓词-1,主语,时间戳)加入训练集。模型参数通过小批量随机梯度下降进行学习。然后,希望最小化瞬时多类损失来训练模型:
在这里插入图片描述
在这里,(s,r,o,t)是一个正样本,(s,r,o’,t)表示通过将真实对象替换为错误对象获得的负样本。需要注意的是,损失函数只能用于训练模型以回答这种形式的查询(主语,谓词,?,时间戳)。由于存在逆样本(对象,谓词-1,主语,时间戳),回答类型为(对象,谓词-1,?,时间戳)的查询已经包含了回答(?,谓词,对象,时间戳)的情况。

此外,期望对从张量因子化得到的矩阵施加正则化约束,以融入时态模式的先验知识并避免过拟合。根据无向图的一个先验假设,即相似节点具有接近的低维表示,我们希望时间戳嵌入满足平滑约束,即相邻时间戳具有接近的表示。时间约束的形式如下:
在这里插入图片描述
为了防止模型过拟合,对主语、时态和非时态谓词、对象以及核心张量施加嵌入正则化约束。此外,出于研究不同嵌入正则化影响的动机,引入了以下两种嵌入正则化方案。由于核心张量包含大量参数,故认为对核心张量施加约束非常重要,可能对模型产生重大影响。因此,基于每种嵌入正则化方案,分别研究对核心张量施加约束和不施加约束的影响。

在这里插入图片描述
其中,||●||F表示 Frobenius范式,||●||k是k次幂的张量范数。
在这里插入图片描述
其中,||●||p l p l_p lp范数,而||●||q表示张量的 q 次幂的张量范数。考虑到瞬时多类损失和上述两类正则化项,我们通过最小化以下损失函数来训练我们的模型:
在这里插入图片描述
其中,R*(E,·)表示以上四种嵌入正则化的其中之一。

时间复杂度和参数增长

在这里插入图片描述

表1列出了所提出的模型TuckERT、TuckERTNT以及基准模型De-SimplE、TComplEx和其变种TNTComplEx的参数数量。基准模型的参数数量与实体数量、谓词数量或嵌入维度d成线性增长关系。而我们的模型的参数数量随着嵌入维度d的增长而增长三倍,因为三维核心张量仅取决于嵌入维度。因此,所提出的模型TuckERT和TuckERTNT的时间复杂度为O(d3)。至于De-SimplE、TComplEx和TNTComplEx,它们的时间复杂度为O(d)。可以看出,在实体数量、谓词数量和嵌入维度固定的前提下,我们的模型包含更多的参数。然而,有人认为,具有许多参数的模型往往容易出现过拟合和可扩展性问题,从而导致性能不佳。表3表明,与基准模型相比,所提出的模型可以通过使用更多可控参数更好地适应大规模离散时间数据。因此,在设计用于时间知识补全的张量分解模型时,一个重要的挑战是在模型参数和数据之间以及表达能力和模型复杂性之间进行权衡。

表达能力分析

对于知识图谱补全模型来说,完全的表达能力是一个非常重要的特性,它指的是模型通过学习能够正确区分正面事实和负面事实的能力。关于我们模型的完全表达能力的证明如下所述。TuckERT对于时间知识图谱补全是完全具备表达能力的。给定一个四元组(es, er, eo, et),其中es、eo ∈ Rne×de 是主语和客体的二进制独热向量表示,er ∈ Rnr×dr, et ∈ Rnt×dr 是谓词和时间戳的二进制独热向量表示。这里,嵌入维度满足de = ne, dr = nr。我们将二进制向量es的第p个元素,er的第k个元素,eo的第q个元素,et的第r个元素设置为1,其他元素设置为0。此外,我们将张量M ∈ Rde×dr×de×dr的第pkqr个元素设置为1,如果时间事实(es, er, eo, et)成立则设置为1,否则设置为-1。根据TuckERT 分解过程:
在这里插入图片描述
实体嵌入、谓词嵌入和时间嵌入与核心张量的内积能够准确地表示原始的时间张量。通过调节核心张量中的参数,模型能够完全区分正样本和负样本。从另一个角度来看,我们可以将核心张量M视为高维空间中的线性分类器,通过学习在低维空间中区分正样本和负样本的能力。

实验

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

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

相关文章

异步加载 JavaScript

目录 ​编辑 前言:异步加载 JavaScript 的重要性 详解:异步加载 JavaScript 的方法 使用 使用动态创建标签: 使用模块引入(ES6模块): 解析:异步加载 JavaScript 的重要性和优势 实践和注…

后台交互-个人中心->小程序登录微信登录接口演示,小程序授权登录理论,小程序授权登录代码演示,微信表情包存储问题

小程序登录微信登录接口演示小程序授权登录理论小程序授权登录代码演示微信表情包存储问题 1.小程序登录微信登录接口演示 推荐使用 wx.getUserProfile 获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 // pages/index/index.js Page({data: {user…

24东北大学计算机计划招生数据

2.结语 24的保研名额很多,统考名额就这些,大家根据自己的情况做出选择 东大计算机不好考,但是不代表考不上!加油 3.数据来源于官网 官网链接

基于深度学习实现一张单图,一个视频,一键换脸,Colab脚本使用方法,在线版本,普通人也可以上传一张图片体验机器学习一键换脸

基于深度学习实现一张单图,一个视频,一键换脸,Colab脚本使用方法,在线版本,普通人也可以上传一张图片体验机器学习一键换脸。 AI领域人才辈出,突然就跳出一个大佬“s0md3v”,开源了一个单图就可以进行视频换脸的项目。 项目主页给了一张换脸动图非常有说服力,真是一图…

python网络爬虫(二)基本库的使用urllib/requests

使用urllib 了解一下 urllib 库,它是 Python 内置的 HTTP 请求库,也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request:它是最基本的 HTTP 请求模块,可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样&…

【项目经理】工作流引擎

项目经理之 工作流引擎 一、业务系统管理目的维护信息 二、组织架构管理目的维护信息 三、角色矩阵管理目的维护信息 四、条件变量管理目的维护信息 五、流程模型管理目的维护信息 六、流程版本管理目的维护信息 七、流程监管控制目的维护信息 系列文章版本记录 一、业务系统管…

COS 音视频实践

对象存储 音视频处理概述-媒体处理实践-最佳实践-腾讯云 1、COS https://www.cnblogs.com/cloudstorageangel/p/15977032.html 全程:对象存储(Cloud Object Storage,COS);腾讯云提供的对象存储服务。 可以对音视频…

目标检测的方法

目标检测大致分为两个方向:基于传统的目标检测算法和基于深度学习的目标检测算法。 1.基于传统的目标检测算法 在利用深度学习做物体检测之前,传统算法对于目标检测通常分为3个阶段:区域选取、特征提取和体征分类。 2.基于深度学习的目标检测算法 目标检测任务可分为两

【SA8295P 源码分析 (一)】111 - 使用 Infineon 工具升级DHU 的MCU 固件过程指导

【SA8295P 源码分析 一】111 - 使用 Infineon 工具升级DHU 的MCU 固件过程指导 系列文章汇总见:《【SA8295P 源码分析 (一)】系统部分 文章链接汇总 - 持续更新中》 本文链接:《【SA8295P 源码分析 (一)】111 - 使用 Infineon 工具升级DHU 的MCU 固件过程指导》 打开 Infineo…

【STM32】时钟设置函数(寄存器版)

一、STM32时钟设置函数移植 1.时钟模块回顾 一个疑问 前面代码并没有设置时钟为什么可以直接使用。 2.时钟树 3.时钟树分析 1.内部晶振(HSI) 内部晶振不稳定,当我们上电后,会自动产生振动,自动产生时钟,…

HBuilder打包的安卓app开屏页广告如何关闭

HBuilder打包的安卓app开屏页广告如何关闭 如上图所示,在打包安卓app时会默认勾选 基础开屏广告 而且无法取消 解决办法 1. 登陆 uni-ad广告联盟 网站 2. 访问广告设置链接 3. 4. 选择你的项目 5. 6. 7.

apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】

网络有很多类似的教程,但很多步骤不太详细。对于想接触反编译门槛的初级友友来说。操作中出现一点问题而解决不了的时候。很多都会放弃。今天的教程系列带你由浅入深的了解apk反编译操作。兴趣是最好的老师。从简单的修改apk名称到深层次的去广告 无vip等等打好基础…

向量检索库Milvus架构及数据处理流程

文章目录 背景milvus想做的事milvus之前——向量检索的一些基础近似算法欧式距离余弦距离 常见向量索引1) FLAT2) Hash based3) Tree based4) 基于聚类的倒排5) NSW(Navigable Small World)图 向…

做亚马逊测评有哪些需要注意的?

做测评的注意事项有哪些? 国外的IP 养号用动态IP是不安全的,因为真实买家的IP地址并不会经常变化,也不会到处乱跳,所以如果要养号就需要用国外的独享家庭住宅IP地址,而且ip纯净度也要高,市面上的鲁米或者911现在基本…

Java算法做题中用到的-数据结构(对应C++的STL)【java中各种集合的api方法】

Java算法做题中用到的-数据结构(对应C的STL) 一、数组List初始化加入元素: add删除元素: remove(参数是角标)获取元素:getindexOf() 返回指定元素下标contains()toArray() 排序方法一&#xff1…

HTML笔记-狂神

1. 初识HTML 什么是HTML? Hyper Text Markup Language : 超文本标记语言 超文本包括:文字、图片、音频、视频、动画等 目前使用的是HTML5,使用 W3C标准 W3C标准包括: 结构化标准语言(HTML、XML) 表现标…

Flask 表单form.validate_on_submit()什么情况下会是false——解决办法

Flask 表单form.validate_on_submit()什么情况下会是false?? 1、在form中受到validators控制,不满足条件就会导致false 2、在form中使用了raise抛出异常后也会false。 3、表单的地方没写{{ form.csrf_token }},在HTML 里加上就好…

FTP的主动传输和被动传输以及实现FTPClient连接池-meethigher

一、概述 FTP(File Transfer Protocol)是一种基于TCP实现的用于在计算机之间传输文件的可靠协议,它屏蔽了各种计算机系统的细节,适用于在异构环境中,进行数据传输。它允许用户从一个计算机(FTP客户端&…

驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)

头文件(head.h) #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED3_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_LE…

Yakit工具篇:中间人攻击(平替Burp)的相关技巧-02

简介 前面写了一篇中间人攻击的代理与劫持相关的配置,今天来介绍一下劫持过程相关的详细设置,以及标记/替换流量,History处理,过滤流量,网站树视角等使用技巧和流程。 劫持的详细解释 劫持界面 开始劫持前我们先对…