Neo4j链接预测训练遇NaN错误,已设默认值仍未解决
问题分析与解决步骤
你遇到的NaN错误源于计算HADAMARD特征向量时,节点对(508,1525)的某个属性值为NaN。尽管你给Person/Publisher/Developer节点的TSNE属性配置了默认值,但仍存在两个核心排查方向:
1. 定位问题节点的属性值
先执行以下查询,确认节点508和1525的标签及属性状态:
MATCH (n) WHERE id(n) IN [508, 1525] RETURN id(n), labels(n), n.TSNE_x, n.TSNE_y, n.TSNE_z, n.embedding
重点核查:
- 哪个节点的TSNE_x/y/z值为NaN?
- 两个节点的
embedding属性中是否包含NaN值?
2. 针对性解决
场景A:App节点的TSNE属性为NaN
你在图投影时仅给Person等节点设置了TSNE默认值,App节点的TSNE属性未配置默认值。即便你认为已加载所有App的TSNE值,仍可能存在遗漏节点。解决方式二选一:
- 补全该App节点的TSNE数值;
- 修改图投影语句,给App节点的TSNE属性也添加默认值:
CALL gds.graph.project( "Steam_Graph", { App: { properties: { TSNE_x: {defaultValue: 0}, TSNE_y: {defaultValue: 0}, TSNE_z: {defaultValue: 0} } }, Person: { properties: { TSNE_x: {defaultValue: 0}, TSNE_y: {defaultValue: 0}, TSNE_z: {defaultValue: 0} } }, Publisher: { properties: { TSNE_x: {defaultValue: 0}, TSNE_y: {defaultValue: 0}, TSNE_z: {defaultValue: 0} } }, Developer: { properties: { TSNE_x: {defaultValue: 0}, TSNE_y: {defaultValue: 0}, TSNE_z: {defaultValue: 0} } } }, { owns: {orientation: "UNDIRECTED"}, friend: {orientation: "UNDIRECTED"}, Published_By: {orientation: "UNDIRECTED"}, Developed_By: {orientation: "UNDIRECTED"} } )
场景B:embedding属性包含NaN
如果查询发现节点的embedding属性存在NaN值,需检查embedding生成过程(如node2vec、GraphSAGE等算法):
- 执行以下查询找出所有embedding含NaN的节点:
MATCH (n) WHERE any(val IN n.embedding WHERE val IS NaN) RETURN id(n), labels(n), n.embedding
- 重新运行embedding生成算法,确保输出无NaN;或者在图投影时为
embedding属性设置默认值(需匹配embedding维度,比如128维则设置defaultValue: [0.0]*128)。
3. 额外验证
修改后重新投影图,执行训练前的估算命令确认无属性缺失后,再启动训练任务。
内容的提问来源于stack exchange,提问作者user3452643
相关产品推荐
相关产品推荐

