TF-GNN踩坑记录(二)
引言
最近在尝试构建GraphTensor时,尝试把默认的特征名hidden_state改成其他时,出现了奇怪的报错。
报错
WARNING:tensorflow:Gradients do not exist for variables ['gnn/essay_model/graph_update/edge_set_update/next_state_from_concat/dense_3/kernel:0', 'gnn/essay_model/graph_update/edge_set_update/next_state_from_concat/dense_3/bias:0', 'gnn/essay_model/graph_update/node_set_update/next_state_from_concat_1/dense_4/kernel:0', 'gnn/essay_model/graph_update/node_set_update/next_state_from_concat_1/dense_4/bias:0'] when minimizing the loss. If you're using model.compile(), did you forget to provide a lossargument
一般来说出现此类错误时,只需要检查各模型call()函数中的运算,排查问题就行了。
但是当我遇到这个问题后,经过多次检查确定变量都传到了输出。
最后发现当我使用默认的特征名hidden_state后,报错消失了
下面是出现错误时的GraphTensor构造方式和GraphUpdate更新方式
node_set = tfgnn.NodeSet.from_fields(
sizes=[node_num],
features={
'node_feature': node_feature,
}
) edge_set = tfgnn.EdgeSet.from_fields(
sizes=[edge_num],
features={
'edge_feature': tf.convert_to_tensor(edge_feature, dtype=tf.float32)},
adjacency=tfgnn.Adjacency.from_indices(
source=('node', adjacency[:, 0]),
target=('node', adjacency[:, 1])
),
) context = tfgnn.Context.from_fields(features=None) graph_tensor = tfgnn.GraphTensor.from_pieces(
node_sets={'node': node_set},
edge_sets={'edge': edge_set},
context=context,
) model = tfgnn.keras.layers.GraphUpdate(
edge_sets={
"edge": tfgnn.keras.layers.EdgeSetUpdate(
edge_input_feature=['edge_feature'],
node_input_feature='node_feature',
next_state=tfgnn.keras.layers.NextStateFromConcat(tf.keras.layers.Dense(2)))
},
node_sets={
"node": tfgnn.keras.layers.NodeSetUpdate(
edge_set_inputs={"edge": tfgnn.keras.layers.Pool(tfgnn.TARGET, "sum")},
node_input_feature='node_feature',
next_state=tfgnn.keras.layers.NextStateFromConcat(
tf.keras.layers.Dense(264)
),
)
},
)
下面是不会出现错误的GraphTensor构造方式和GraphUpdate更新方式
node_set = tfgnn.NodeSet.from_fields(
sizes=[node_num],
features={
'hidden_state': node_feature,
}
) edge_set = tfgnn.EdgeSet.from_fields(
sizes=[edge_num],
features={
'hidden_state': tf.convert_to_tensor(edge_feature, dtype=tf.float32)},
adjacency=tfgnn.Adjacency.from_indices(
source=('node', adjacency[:, 0]),
target=('node', adjacency[:, 1])
),
) context = tfgnn.Context.from_fields(features=None) graph_tensor = tfgnn.GraphTensor.from_pieces(
node_sets={'node': node_set},
edge_sets={'edge': edge_set},
context=context,
) model = tfgnn.keras.layers.GraphUpdate( edge_sets={
"edge": tfgnn.keras.layers.EdgeSetUpdate(
next_state=tfgnn.keras.layers.NextStateFromConcat(tf.keras.layers.Dense(2)))
},
node_sets={
"node": tfgnn.keras.layers.NodeSetUpdate(
edge_set_inputs={"edge": tfgnn.keras.layers.Pool(tfgnn.TARGET, "sum")}
next_state=tfgnn.keras.layers.NextStateFromConcat(
tf.keras.layers.Dense(264)
),
)
},
)
虽然这个方法能够让程序正确运行,但是依然没有解决最根本的原因,为什么在修改特征名之后,会出现该错误。
TF-GNN踩坑记录(二)的更多相关文章
- Spring Cloud Feign踩坑记录(二)
注意,以下的Feign遇到的坑,在高版本中有些已经修复. 某些项目由于历史包袱原因,无法进行全面升级,才需要修补这些坑. 1.启动报错:not annotated with HTTP method t ...
- React-Native踩坑记录二
1.Image组件的borderRadius画圆有平台兼容性问题,在IOS下会失效 解决方法有几种 (1)在外面包裹一层View,对View组件使用borderRadius就可以了,这是我的做法 (2 ...
- VUE使用微信JDK(附踩坑记录)
VUE使用微信分享SDK(附踩坑记录) 微信分享官方文档 安装JS-SDK npm i -S weixin-jsapi 引入包 ES5 写法 const wx = require('weixin-js ...
- [技术博客]iview组件样式踩坑记录
[技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...
- DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设
很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...
- unionId突然不能获取的踩坑记录
昨天(2016-2-2日),突然发现系统的一个微信接口使用不了了.后来经查发现,是在网页授权获取用户基本信息的时候,unionid获取失败导致的. 在网页授权获取用户基本信息的介绍中(http://m ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
- SpringBoot + Shiro + shiro.ini 的踩坑记录
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
随机推荐
- 内存问题难定位,那是因为你没用ASAN
摘要:ASAN全称:Address Sanitizer,google发明的一种内存地址错误检查器.目前已经被集成到各大编译器中. 本文分享自华为云社区<内存定位利器-ASAN使用小结>,作 ...
- 如何用WebGPU流畅渲染千万级2D物体:基于光追管线
大家好~我们已经实现了百万级2D物体的流畅渲染,不过是基于计算管线实现的.本文在它的基础上,改为基于光追管线实现,主要进行了CPU和GPU端内存的优化,成功地将渲染的2D物体数量由4百万提高到了2千万 ...
- PerfView专题 (第一篇):如何寻找热点函数
一:背景 准备开个系列来聊一下 PerfView 这款工具,熟悉我的朋友都知道我喜欢用 WinDbg,这东西虽然很牛,但也不是万能的,也有一些场景他解决不了或者很难解决,这时候借助一些其他的工具来辅助 ...
- Windows 11上Dev C++ 5.11 提示 Failed to execute xxx Error 0的一种解决方法
问题现象 在Windows 11上用Dev C++ 5.11编译运行程序,出现如下错误不能运行,且自己的程序没有问题. 可能的原因 Dev C++没有以管理员身份运行? 生成的程序所在的目录受到了访问 ...
- Luogu1856 [USACO5.5]矩形周长Picture (线段树扫描线)
对于横轴,加上与上一次扫描的差值:对于竖轴,加上高度差与区间内不相交线段\(*2\)的积: 难点在pushdown,注意维护覆盖关系.再就注意负数 #include <iostream> ...
- 浅谈 Raft 分布式一致性协议|图解 Raft
前言 本篇文章将模拟一个KV数据读写服务,从提供单一节点读写服务,到结合分布式一致性协议(Raft)后,逐步扩展为一个分布式的,满足一致性读写需求的读写服务的过程. 其中将配合引入Raft协议的种种概 ...
- 痞子衡嵌入式:浅析IAR下调试信息输出机制之半主机(Semihosting)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR下调试信息输出机制之半主机(Semihosting). 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我 ...
- 从new File("")到jdk源码
1. 概述 今天在项目中看到下面两行代码,看注释说是获取当前工作路径,之前也没有用过这种用法,比较好奇还能这样用,所以研究了一下源码. //获取当前工作路径 File file = new File( ...
- 二维积水(DP优化)
题面 在二向箔爆发前的时间里,宇宙中就有一个叫地球的星球,上面存在过奴隶主,后来绝迹了-- --<第三维的往事> 在这个美丽的二维宇宙中,有一个行星叫地圆.地圆有一条大陆叫美洲,上面生活着 ...
- 内网技巧-通过SAM数据库获得本地用户hash的方法
内网技巧-通过SAM数据库获得本地用户hash的方法 在windows上的C:\Windows\System32\config目录保存着当前用户的密码hash.我们可以使用相关手段获取该hash. 提 ...