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.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
随机推荐
- git 生成key并添加key(Windows)
简介 一般来说,在项目代码拉取或者提交前都需要添加项目权限,除此之外也需要将对应设备的public key添加至对应的git上,因此需要生成public key 步骤 1.安装git插件(Window ...
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- TDM 三部曲 (与 Deep Retrieval)
推荐系统的主要目的是从海量物品库中高效检索用户最感兴趣的物品,既然是"海量",意味着用户基本不可能浏览完所有的物品,所以才需要推荐系统来辅助用户高效获取感兴趣的信息.同样也正是因为 ...
- day25--Java集合08
Java集合08 15.HashTable 15.1HashTable的基本介绍 存放的元素是键值对:即K-V HashTable的键和值都不能为null HashTable的使用方法基本上和Hash ...
- ARC116 A Odd vs Even (质因数分解,结论)
题面 有 T T T 组数据,每次给出一个数 N N N ,问 N N N 的所有因数(包括 1 1 1 和 N N N)中奇因数个数和偶因数个数的关系(">"," ...
- C++ 对于函数名的操作,函数名本身和取*以及取&的区别
void TestFunc() { } int _tmain(int argc, _TCHAR* argv[]) { cout<<TestFunc<<endl; cout< ...
- MyBatis快速上手与知识点总结
目录 1.MyBatis概述 1.1 MyBatis概述 1.2 JDBC缺点 1.3 MyBatis优化 2.MyBatis快速入门 3.Mapper代理开发 3.1 Mapper代理开发概述 3. ...
- SETTLE约束算法中的坐标变换问题
技术背景 在之前的两篇文章中,我们分别讲解了SETTLE算法的原理和基本实现和SETTLE约束算法的批量化处理.SETTLE约束算法在水分子体系中经常被用到,该约束算法具有速度快.可并行.精度高的优点 ...
- django_day07
django_day07 django form组件 form组件的定义 class RegForm(forms.Form): user = forms.CharField(label='用户名') ...
- 第五十五篇:Axios的封装
好家伙, 上图 1.为什么需要封装axios? 当我们改变项目的使用环境时候,url也会随之改变,那么我们就需要改很多axios请求中的url配置 现在我们将axios封装,在项目使用环境改变时我们只 ...