- 博客(1081)
- 资源 (18)
- 收藏
- 关注
原创 【PyTorch】Tensor.where() 方法:根据给定条件在两个张量之间逐元素选择值
在 PyTorch 中,Tensor.where() 是 torch.where() 的 张量实例方法版本,用于根据给定条件在两个张量之间逐元素选择值。Tensor.where() 是 PyTorch 中非常常用的条件操作方法,特别适合在模型训练或推理中进行动态控制和替代。其与 torch.where() 本质相同,选择哪种形式取决于个人编码风格。
2025-04-04 11:18:10
162
原创 【PyTorch】Tensor.masked_select() 方法:筛选出掩码为 True 的元素
torch.Tensor.masked_select() 是 PyTorch 中用于从张量中 筛选出掩码为 True 的元素 的方法。它是对张量进行 条件筛选/提取 的常用工具,返回的是一个 1D 的新张量。注意事项:mask 必须是 torch.bool 类型;返回的张量是 一维的,无论原始张量是多少维;返回值是 新张量,原张量不变。
2025-04-04 11:13:11
176
原创 【PyTorch】Tensor.masked_scatter() 方法:将另一个张量的值“散布”到当前张量的掩码位置(True)
在 PyTorch 中,masked_scatter() 是一个用于 将另一个张量的值“散布”到当前张量的掩码位置(True) 的方法。它是一个 按掩码进行定点赋值 的操作,常用于需要根据条件更新部分张量的场景。 注意事项:mask 必须是布尔类型。source 的元素数量必须 正好等于 mask.sum()。返回的是 新张量,也可以通过 in-place 操作(加 _)实现:x.masked_scatter_(mask, source)
2025-04-04 11:08:06
171
原创 【PyTorch】Tensor.masked_fill() 方法:根据布尔掩码(mask)将张量中部分元素替换为指定值
在 PyTorch 中,masked_fill() 是一个用于 根据布尔掩码(mask)将张量中部分元素替换为指定值 的方法。它常用于:遮蔽(mask)掉某些无效元素(如 attention mask),对填充值进行处理,实现数值屏蔽(如用 -inf 屏蔽 softmax 中的无效位置)。
2025-04-04 11:02:22
250
原创 什么是关系抽取中的“三元组重叠”问题(Overlapping Triples Problem)?
在关系抽取任务中,三元组重叠(Overlapping Triples)问题指的是:在同一个句子中,存在多个三元组(subject, relation, object)之间的实体存在重叠,即一个实体参与多个三元组。三元组重叠问题是关系抽取中最核心的难点之一,Joint(联合式)模型是当前解决这类问题的主流方向,尤其是 CasRel、TPLinker 等模型 对它支持良好。
2025-04-03 23:36:56
412
原创 关系抽取的 pipeline 方式和 joint 方式
关系抽取(Relation Extraction, RE)是信息抽取中的关键任务。针对其实现方式,学术界和工业界主要有两种技术路线:Pipeline(管道式)方法,Joint(联合式)方法。Pipeline 方法 将关系抽取划分为两个或多个子任务,先做实体识别,再进行关系分类。Joint 方法 将实体识别与关系抽取作为一个 联合建模的任务,同时学习 实体识别和实体间关系。
2025-04-03 23:28:05
413
原创 BiLSTM+Attention 实现关系抽取
关系抽取(Relation Extraction, RE) 是从自然语言文本中识别出实体之间的语义关系的任务。给定一个句子和一个实体对,模型需要判断这两个实体之间是否存在某种预定义的语义关系。BiLSTM + Attention 是关系分类任务中经典的结构之一,具有良好的上下文建模能力和较强的可解释性,是从基础模型到复杂深度关系抽取系统的重要起点。
2025-04-03 23:24:05
472
原创 【PyTorch】torch.select() 函数:某一维度上 选择一个特定索引位置的切片
torch.select() 是 PyTorch 中一个较少直接使用但功能明确的函数,用于在某一维度上 选择特定索引位置的切片,只能选择一个 index,不支持多个或批量选择。虽然 torch.select() 功能简单,但在构建动态维度操作或作为底层组件时很有用。它在自定义模型结构、动态时间步处理等任务中偶尔会派上用场。如需更复杂的选择操作,推荐使用 index_select() 或 gather()。
2025-04-03 22:30:33
139
原创 【PyTorch】torch.index_select() 函数:某一维度上按索引选取元素
torch.index_select() 是 PyTorch 中用于在 某一维度上按索引选取元素 的函数,适用于从张量中抽取特定的行、列或更高维度切片,是比切片更灵活的选择操作。torch.index_select() 是构建数据选择、索引变换等操作的基本工具,特别适用于 NLP、图神经网络中嵌入提取、子图构造等任务。
2025-04-03 22:25:31
200
原创 【PyTorch】torch.gather() 函数:根据索引张量从输入张量中收集元素
torch.gather() 是 PyTorch 中一个功能非常强大的函数,用于在指定维度上 根据索引张量从输入张量中收集元素。它在深度学习中常用于:分类模型中选取目标类别的预测分数,掩码或注意力机制中抽取特定位置,多类标签、序列任务中对齐标签和预测。torch.gather() 是构建深度学习模型中 动态索引操作的核心工具,特别是在分类、序列、注意力等任务中非常常见。
2025-04-03 22:20:44
212
原创 【Python】neomodel 库: Neo4j 图数据库 ORM(对象关系映射)库
neomodel 是一个基于 Python 的 Neo4j 图数据库 ORM(对象关系映射)库,旨在让你像使用 Django ORM 一样轻松地操作 Neo4j 数据库。它将图中的节点和关系建模为 Python 类,使图数据库的使用更加直观、优雅。neomodel 是 Python 中最接近 ORM 风格的图数据库开发工具,非常适合那些希望像操作 Django ORM 一样使用 Neo4j 的开发者。它能让你更专注于图数据结构的建模,而不用频繁书写 Cypher 查询。适合原型开发、中小型项目、教学、知识图
2025-04-03 21:28:37
162
原创 【Python】neo4j 库:官方 Neo4j 驱动
neo4j 是 Neo4j 官方提供的 Python 驱动,用于通过 Bolt 协议 与 Neo4j 图数据库进行通信。它相比 py2neo 更加底层,更适合对性能、事务控制有更高要求的用户。neo4j 官方驱动功能强大、性能优越,是构建生产级图数据库系统的首选。适合追求细粒度控制和更强事务能力的开发者。对于原型开发或快速建模,也可以考虑使用更高层的 py2neo。
2025-04-03 21:23:37
95
原创 【Python】py2neo 库:连接和操作 Neo4j 图数据库
py2neo 是 Python 中用于连接和操作 Neo4j 图数据库 的高级客户端库。它提供了面向对象的接口,使得 Python 程序员能够方便地与 Neo4j 数据库进行交互,包括:创建节点与关系(Relationship),执行 Cypher 查询,图数据建模,数据导入导出等操作。
2025-04-03 21:19:30
386
原创 【PyTorch】torch.squeeze() 函数:去除张量中维度为 1 的维度
torch.squeeze() 是 PyTorch 中用于 去除张量中维度为 1 的维度(也称为“单维”) 的函数。它常用于去除多余的维度,使张量变得更紧凑,便于后续处理。无 dim 参数时:移除所有 shape 为 1 的维度。有 dim 参数时:仅当该维度为 1 时才会被移除。
2025-04-03 18:46:27
236
原创 【Python】all() 函数:判断一个可迭代对象中 所有元素是否都为真(True)
all() 是 Python 的一个内置函数,用于判断一个可迭代对象中 所有元素是否都为真(True)。它在布尔逻辑中对应的是“与”操作。1. 基本语法:all(iterable),参数说明,iterable:任意可迭代对象(如:list、tuple、set、dict、str、生成器等)。返回值:True:如果所有元素都为真;False:只要有一个元素为假。
2025-04-02 22:31:15
89
原创 【Python】any() 函数:判断一个可迭代对象中 是否有“至少一个”元素为真(True)
any() 是 Python 的内置函数,用于判断一个可迭代对象中 是否有“至少一个”元素为真(True)。它是布尔逻辑中的“或”操作。1. 基本语法:any(iterable),参数说明:iterable:一个可迭代对象(如:list、tuple、dict、set、str 等),返回值:布尔值,如果 至少有一个元素为真,返回 True;如果 所有元素都为假,返回 False。
2025-04-02 22:27:22
205
原创 BERT 及类似的 Transformer 模型中进行微调时,不进行权重衰减的层/参数有哪些?
在使用 BERT 模型进行微调(fine-tuning) 时,通常会使用 权重衰减(Weight Decay) 技术来防止过拟合。但在实践中,有一些 特定的层或参数不适合进行权重衰减。这些参数一般包括:1. LayerNorm 层的所有参数:LayerNorm.weight(或称为 gamma),LayerNorm.bias(或称为 beta)。2. 所有的 bias 参数:几乎所有线性层(如 nn.Linear)都会有 bias 参数。对 bias 项进行权重衰减没有太多意义,甚至可能降低模型性能。
2025-04-02 22:18:27
92
原创 【PyTorch】torch.matmul() 函数: 矩阵乘法(矩阵点积)
torch.matmul() 是 PyTorch 中用于执行 矩阵乘法(矩阵点积) 的函数,与 @ 运算符等价,支持 1D、2D、3D 及更高维度张量的广义矩阵乘法,是深度学习中非常常用的线性代数运算。
2025-04-02 21:23:25
516
原创 【Python】random.choice() 函数:从一个 非空序列 中 随机选择一个元素
random.choice() 是 Python 标准库 random 模块中的一个函数,用于从一个 非空序列 中 随机选择一个元素。 常用于模拟抽奖、随机测试数据、游戏开发等场景。- 使用时要确保序列非空,类型为 `list`、`tuple`、`str` 等。这个函数是 Python 随机功能中的“抽签利器”,简洁又高效。
2025-04-02 17:58:13
94
原创 【Python】for 循环:遍历可迭代对象(如:列表、字符串、元组、字典、集合、生成器等)
for 循环是 Python 中最常用的循环结构之一,用于遍历可迭代对象(如:列表、字符串、元组、字典、集合、生成器等),依次访问其中的每一个元素。常与 range()、enumerate()、zip() 等组合使用。支持 else、break、continue 控制流程。是构建数据处理、结构遍历、批处理等常用逻辑的基础工具。for 循环是 Python 中极其强大而简洁的工具,掌握它能让你高效地处理任何可迭代对象。
2025-04-01 16:07:14
292
原创 【Python】fastNLP 库:快速、易用的 NLP(自然语言处理)库
fastNLP 是一个 快速、易用的 NLP(自然语言处理)库,支持 文本预处理、数据加载、模型训练、模型评估和推理。fastNLP 采用模块化设计,支持 PyTorch 作为后端,并为 NLP 任务(如分类、命名实体识别、序列标注等)提供了丰富的功能。核心组件包括 Instance、DataSet、Trainer、Tester 等,可以实现数据预处理、模型训练和评估。支持自定义模型,并与 PyTorch 高度兼容,适合处理复杂的 NLP 任务。fastNLP 适合 快速搭建 NLP 模型,并对数据进行灵活
2025-04-01 12:03:15
585
原创 CasRel 模型:级联与残差学习模型,用于 关系三元组抽取
CasRel(Cascade and Residual Learning for Relational Triple Extraction) 是由清华大学的 NLP 研究团队提出的级联与残差学习模型,用于 关系三元组抽取(Relational Triple Extraction)。该模型发表在 ACL 2020,通过 级联解耦(Cascade Decoupling) 和 残差学习(Residual Learning) 的机制来 提取文本中的实体关系三元组,解决了 重叠关系(Overlapping Re
2025-04-01 10:49:29
838
原创 如何在 Python 中使用 Neo4j
要在 Python 中连接和操作 Neo4j 数据库,通常使用官方的 neo4j 驱动程序(neo4j Python Driver)。Neo4j 使用 neo4j Python 驱动来连接、查询和管理图数据。Cypher 是 Neo4j 的查询语言,类似 SQL。可以通过 Python 进行 CRUD 操作(创建、查询、更新、删除)。Flask 可以轻松与 Neo4j 整合,实现 Web API。Neo4j 通常通过 bolt:// 协议在 7687 端口上进行通信。
2025-04-01 10:49:11
290
原创 【Cypher】空值(NULL)
NULL 是 Cypher 中的特殊值,用于表示:属性不存在,未知或未定义的值,查询未匹配到结果时。在 Cypher 中,NULL 是一种占位符,不能直接参与数学运算或字符串操作,也不能与其他 NULL 进行比较。
2025-04-01 10:48:41
643
原创 【Cypher】表达式(Expression)
表达式(Expression) 是 Cypher 中用于计算值的基本单元,可以用于查询、过滤、更新数据以及进行复杂的数据转换。通过使用 WITH 拆解复杂查询、为属性创建索引、使用 CASE 进行条件判断,可以大幅提升查询性能。EXPLAIN 和 PROFILE 是优化复杂表达式和查询性能的利器,建议在优化前进行详细的查询分析。表达式可以是:常量(Literal): 直接指定的值,如字符串、数值、布尔值、数组等。属性访问: 访问节点或关系的属性。函数调用: 使用内置函数或用户定义的函数计算值。算术运算: 执
2025-04-01 10:48:25
979
原创 【Cypher】事务(Transaction):通过 :begin、:commit 和 :rollback 可以手动控制事务的开始、提交和回滚
事务(Transaction) 是 Neo4j 确保数据一致性和完整性的关键机制,支持自动事务和显式事务两种模式。通过 :begin、:commit 和 :rollback 可以手动控制事务的开始、提交和回滚。CALL {} 和 IN TRANSACTIONS 可以用于批量处理大规模数据,防止内存溢出。SHOW TRANSACTIONS 和 TERMINATE TRANSACTION 可用于监控和管理活跃的事务,防止资源占用过多。了解 ACID 特性、事务隔离级别以及事务冲突的处理机制,可以帮助你更高效地管
2025-04-01 10:48:10
744
原创 【Cypher】执行计划(Execution Plan)
Cypher 执行计划 是优化 Neo4j 查询性能的重要工具,EXPLAIN 和 PROFILE 可帮助识别查询瓶颈并优化执行步骤。了解关键的操作符(NodeIndexSeek、Filter、Expand(All) 等)可以帮助分析查询的效率,并通过创建合适的索引、使用 WITH 分解复杂查询、限制关系扩展深度等方式进行优化。避免 CartesianProduct 和 NodeByLabelScan 等低效操作是提高 Neo4j 查询性能的关键。定期使用 EXPLAIN 和 PROFILE 进行查询分析,
2025-04-01 10:47:31
937
原创 【Cypher】查询调优(Query Optimization)
Cypher 查询调优 通过使用索引、避免笛卡尔积、限制关系扩展深度和使用 WITH 拆解复杂查询,可以显著提高 Neo4j 数据库的性能。EXPLAIN 和 PROFILE 是 Cypher 调优的核心工具,可以帮助识别查询瓶颈并优化查询逻辑。使用合适的索引、合理的分页机制、以及限制结果集大小可以防止数据库性能下降。避免 OR、OPTIONAL MATCH 和未限制的关系扩展,确保查询只访问必要的数据,提高查询速度。掌握 Cypher 查询调优的技巧,可以帮助优化 Neo4j 的查询性能,提高数据访问效率
2025-04-01 10:46:21
883
原创 【Cypher】数据库管理:创建、删除、启动、停止和查询操作
Neo4j 4.x 及以上版本引入了多数据库支持,可以通过 Cypher 进行数据库的创建、删除、启动、停止、切换和备份等操作。SHOW DATABASES 可以查看当前 Neo4j 实例中的所有数据库状态,CREATE DATABASE 和 DROP DATABASE 用于管理数据库的生命周期。通过 ALTER DATABASE 可以设置数据库的访问模式和默认状态,通过 SHOW TRANSACTIONS 和 TERMINATE TRANSACTION 可以管理事务。配合 SHOW PRIVILEGES、
2025-03-31 19:08:05
800
原创 【Cypher】约束(Constraint) :确保数据的一致性、完整性和唯一性,例如:UNIQUE、NODE KEY、EXISTS、RELATIONSHIP
约束(Constraint) 是 Neo4j 用于确保数据一致性和完整性的机制,支持 UNIQUE、NODE KEY、EXISTS 和 RELATIONSHIP 约束。创建约束可以防止数据重复、保证属性的存在性,并自动创建相关索引提升查询性能。SHOW CONSTRAINTS 可用于查看当前数据库中的所有约束,DROP CONSTRAINT 可用于删除不再需要的约束。EXPLAIN 和 PROFILE 可用于检查查询计划,并确认是否使用了相关约束。
2025-03-31 19:04:27
751
原创 【Cypher】FULLTEXT 索引(全文索引):文本数据进行全文检索、模糊匹配 和 复杂文本搜索
FULLTEXT 索引(全文索引) 是 Neo4j 提供的一种索引类型,专门用于对文本数据进行全文检索、模糊匹配 和 复杂文本搜索。通过 CREATE FULLTEXT INDEX 可以创建节点或关系上的 FULLTEXT 索引,并使用 db.index.fulltext.queryNodes() 或 db.index.fulltext.queryRelationships() 进行查询。FULLTEXT 索引允许对字符串属性执行高效的全文搜索,返回与查询关键字匹配的节点或关系。FULLTEXT 索引通过使
2025-03-31 18:59:39
938
原创 【Cypher】COMPOSITE 索引(复合索引):将多个属性组合在一起进行索引
COMPOSITE 索引(复合索引) 是 Neo4j 4.x 及以上版本提供的一种索引类型,可以将多个属性组合在一起进行索引,从而提高组合属性的查询性能。通过 CREATE INDEX 创建 COMPOSITE 索引时,应确保属性的顺序与查询中的匹配顺序一致。EXPLAIN 和 PROFILE 可用于验证 COMPOSITE 索引是否生效,并进行性能优化。COMPOSITE 索引适用于查询组合属性的场景,但需要注意顺序敏感性和 OR 查询限制。COMPOSITE 索引主要用于:组合查询: 查询多个属性的组合
2025-03-31 18:56:48
653
原创 【Cypher】RANGE 索引(Range Index):用于处理数值数据和日期数据的范围查询和排序操作
RANGE 索引(Range Index) 是 Neo4j 中的一种索引类型,专门用于处理数值数据和日期数据的范围查询和排序操作。通过 CREATE RANGE INDEX 创建索引,可以提升 WHERE 子句和 ORDER BY 查询的性能。EXPLAIN 和 PROFILE 可以帮助确认查询是否使用了 RANGE 索引,提高查询优化能力。RANGE 索引不支持 OR 查询、复合索引和 CONTAINS 查询,应根据使用场景合理选择索引类型。RANGE 索引适用于以下场景:范围匹配: >、<、>=、<=,
2025-03-31 18:54:14
921
原创 【Cypher】POINT 索引(Point Index):用于地理空间数据(Spatial Data) 的索引类型
POINT 索引(Point Index) 是 Neo4j 提供的一种专门用于地理空间数据(Spatial Data) 的索引类型,可有效处理点坐标、地理位置和空间计算。通过 CREATE POINT INDEX 可以创建 POINT 索引,提升地理数据查询性能。distance() 函数可用于计算两个点之间的距离,并结合 WITH 和 ORDER BY 进行距离排序查询。POINT 索引使用 R-Tree 数据结构来存储和查询地理空间数据。POINT 索引支持的空间数据包括:二维坐标(Cartesian)
2025-03-31 18:49:59
959
原创 【Cypher】TEXT 索引(Text Index):用于对字符串属性进行精确匹配、前缀匹配 和 文本搜索
TEXT 索引(Text Index) 是 Neo4j 4.x 及以上版本提供的一种索引类型,专门用于对字符串属性进行精确匹配、前缀匹配 和 文本搜索。创建 TEXT 索引时使用 CREATE TEXT INDEX 语法,并可以通过 SHOW INDEXES 查看索引状态。TEXT 索引适用于对大量字符串属性进行快速匹配,提高基于字符串属性的查询性能。TEXT 索引与 BTREE 索引不同,它更适合文本匹配操作,包括 STARTS WITH、ENDS WITH 和 CONTAINS 等操作。
2025-03-31 18:47:11
878
原创 【Cypher】BTREE 索引(B-Tree Index):适用于节点或关系属性的精确匹配和范围查询
BTREE 索引(B-Tree Index) 是 Neo4j 中默认使用的索引类型,适用于节点或关系属性的精确匹配和范围查询。通过创建 BTREE 索引,可以显著提高 MATCH 和 WHERE 查询的性能。BTREE 索引支持以下查询操作:精确匹配:=。范围匹配:>, <, >=, <=。复合索引:组合多个属性进行查询。复合索引适用于多属性组合查询,但属性顺序必须与创建时一致。使用 SHOW INDEXES 查看索引,使用 EXPLAIN 和 PROFILE 分析查询计划,确保索引生效。
2025-03-31 18:44:04
953
原创 【Cypher】索引(Index):BTREE、 TEXT、 POINT、 RANGE、 COMPOSITE、 FULLTEXT
在 Cypher 中,索引(Index) 是一种用于加速节点和关系属性的查找和匹配的机制。Cypher 提供了丰富的索引机制,包括 BTREE 索引、文本索引、点索引、范围索引和全文索引。通过 SHOW INDEXES 查看当前索引,通过 EXPLAIN 和 PROFILE 检查索引使用情况。复合索引和 FULLTEXT 索引是优化复杂查询的重要工具。合理使用索引和约束可以提高 Neo4j 数据库的性能和数据一致性。
2025-03-31 18:40:04
820
原创 【Cypher】自定义函数(User-Defined Functions, UDFs):使用 Java 或其他兼容 JVM 的语言编写的函数
自定义函数(User-Defined Functions, UDFs)是用户在 Neo4j 中使用 Java 或其他兼容 JVM 的语言编写的函数,并将其部署到 Neo4j 服务器中。自定义函数允许你在 Cypher 查询中执行更复杂的操作,并扩展 Neo4j 内置函数的功能。自定义函数与 Cypher 内置函数类似,可以在 RETURN、WITH 和 SET 语句中使用。通过自定义函数,可以实现诸如字符串处理、数据转换、数学计算和复杂数据分析等功能。
2025-03-31 18:33:59
807
原创 【Cypher】字符串函数(String Functions):处理字符串数据,例如 substring()、replace()、upper()、lower()、split()、concat()
字符串函数(String Functions)是 Cypher 提供的一组处理字符串数据的函数,可用于格式化、截取、替换、转换和拼接字符串。常用函数包括 toString()、size()、substring()、replace()、upper()、lower()、split() 和 concat()。这些函数可以与 MATCH、WITH 和 RETURN 结合使用,实现复杂的字符串操作。split() 和 UNWIND 结合使用可以处理批量数据,而 coalesce() 可防止 NULL 引起的错误。
2025-03-31 18:31:20
910
原创 【Cypher】数学函数(Mathematical Functions):对数值进行数学计算,例如:abs()、sqrt()、ceil()、floor() 、 round()、cos()、sin()
Cypher 中的数学函数(Mathematical Functions)用于对数值进行数学计算。这些函数适用于整数(Integer)和浮点数(Float)类型的数据。包括基础算术函数、对数函数、三角函数和随机数生成。数学函数通常与 RETURN、WITH 和 SET 语句一起使用,可以在查询过程中对数据进行转换和计算。使用 abs()、sqrt()、ceil()、floor() 和 round() 等函数,可以对数值进行基本的转换和处理。三角函数如 cos()、sin() 和 tan() 适用于角度计算,
2025-03-31 18:27:27
594
电影图数据库构造:基于Cypher查询语句创建影人关系网及其应用,Neo4j数据库 Movie Graph Guide 案例数据
2025-03-18
neo4j的配置文件,包含:neo4j.conf、neo4j-admin.conf、server-logs.xml、user-l
2025-03-17
Python基于toad实现生成评分卡 完整的示例代码和数据集
2025-01-05
toad.selection.select函数示例的数据集和代码
2025-01-03
toad.selection.stepwise函数示例的数据集和代码
2025-01-03
Metropolis-Hastings算法和吉布斯采样(Gibbs sampling)算法Python代码实现
2024-12-23
维特比算法Python代码实现
2024-12-09
EM算法Python代码实现
2024-11-29
朴素贝叶斯分类器算法Python代码实现
2024-11-25
PCA算法Python代码实现
2024-11-17
随机森林(Random Forest)算法Python代码实现
2024-11-13
CatBoost使用示例
2024-11-12
XGBoost算法Python代码实现
2024-11-09
GBDT算法Python代码实现
2024-11-03
AdaBoost算法Python代码实现
2024-10-31
近似线性可分支持向量机Python代码实现
2024-10-27
构建ID3决策树的完整算法代码
2024-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人