引言

最近在尝试构建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踩坑记录(二)的更多相关文章

  1. Spring Cloud Feign踩坑记录(二)

    注意,以下的Feign遇到的坑,在高版本中有些已经修复. 某些项目由于历史包袱原因,无法进行全面升级,才需要修补这些坑. 1.启动报错:not annotated with HTTP method t ...

  2. React-Native踩坑记录二

    1.Image组件的borderRadius画圆有平台兼容性问题,在IOS下会失效 解决方法有几种 (1)在外面包裹一层View,对View组件使用borderRadius就可以了,这是我的做法 (2 ...

  3. VUE使用微信JDK(附踩坑记录)

    VUE使用微信分享SDK(附踩坑记录) 微信分享官方文档 安装JS-SDK npm i -S weixin-jsapi 引入包 ES5 写法 const wx = require('weixin-js ...

  4. [技术博客]iview组件样式踩坑记录

    [技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...

  5. DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设

    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...

  6. unionId突然不能获取的踩坑记录

    昨天(2016-2-2日),突然发现系统的一个微信接口使用不了了.后来经查发现,是在网页授权获取用户基本信息的时候,unionid获取失败导致的. 在网页授权获取用户基本信息的介绍中(http://m ...

  7. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  8. ubuntu 下安装docker 踩坑记录

    ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...

  9. SpringBoot + Shiro + shiro.ini 的踩坑记录

    0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...

随机推荐

  1. CF1615G Maximum Adjacent Pairs

    \(CF1615G\) Description 给定一个数列 \(a\),你需要将所有 \(a_i=0\) 的位置填上一个 \(1\sim n\) 的正整数,使得数列的「值」最大. 数列的值定义为满足 ...

  2. 程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果

    谁说程序员不懂浪漫? 作为程序员,用自己的代码本事手搓一个技术感十足的惊喜,我觉得,这是不亚于车马慢时代手写信的古典主义浪漫. 那么,应该怎样创作出具有自我身份属性的浪漫惊喜呢? 玩法很多,今天给大家 ...

  3. Luogu4427 [BJOI2018]求和 (树上差分)

    预处理,树上差分.注意深度减一 #include <cstdio> #include <iostream> #include <cstring> #include ...

  4. PerfView专题 (第六篇):如何洞察 C# 中 GC 的变化

    一:背景 在洞察 GC 方面,我觉得市面上没有任何一款工具可以和 PerfView 相提并论,这也是为什么我会在 WinDbg 之外还要学习这么一款工具的原因,这篇我们先简单聊聊 PerfView 到 ...

  5. gorm tips

    约定的列名 type User struct { ID uint // 列名是 `id` Name string // 列名是 `name` Birthday time.Time // 列名是 `bi ...

  6. 造序列(构造,DP)

    题面 Sample Input 7 8 7 10 31 20 100 869120 Sample Output 6 1 1 4 5 1 4 7 1 9 1 9 8 1 0 8 1 9 4 9 1 0 ...

  7. 【java】学习路线3-二维数组声明与初始化、Arrays类

    import java.util.Arrays;public class Learn02{    public static void main(String[] args){        Syst ...

  8. Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发

    一.REST简介 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描 ...

  9. (最简单详细)IronPython下载、安装及简单使用

    说实话,对于我这种小白,在网上找个IronPython找的很费劲,学会操作之后,直接整个随笔,供新手参考.前提是现在你应该有VS了 (1)找到IronPython的网站 很多人肯定就按照习惯搜索,Ir ...

  10. Postman中的Pre-request Scrip详解

    Postman中的Pre-request Scrip详解 一.Pre-request Scrip的简介 1.Pre-request Script是在请求发送之前需要执行的代码片段: 2.请求参数中包含 ...