引言

最近在尝试构建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)
),
)
},
)

虽然这个方法能够让程序正确运行,但是依然没有解决最根本的原因,为什么在修改特征名之后,会出现该错误。

最新文章

  1. SpringJMS解析3-监听器
  2. arduino上使用sprintf()函数输出float值出错
  3. Nob畅想在线教育
  4. .Net课程体系
  5. SOAP web service用AFNetWorking实现请求
  6. OSSEC
  7. 第十七周oj刷题——Problem B: 分数类的四则运算【C++】
  8. 一个给力的html5 画多边形的例子
  9. C++学习之路—继承与派生(四)拓展与总结
  10. jquery.datetimepicker.js 当鼠标离开时,不选中当前时间,以达到清空的目的
  11. [JLOI2014] 松鼠的新家
  12. 【故障公告】推荐系统中转站撑爆服务器 TCP 连接引发的故障
  13. MTK Android O1平台预置apk
  14. R语言 一套内容 从入门 到放弃
  15. CentOS 7 服务端口表
  16. 初学HTML-10
  17. cocos2dx - Lua 语言
  18. Mybatis 加载 Mapper配置的四种方式
  19. mongdb基本操作和更新操作
  20. 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的

热门文章

  1. 【HMS core】【FAQ】HMS Toolkit典型问题合集1
  2. 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现
  3. k8s vs k3s: 差异解析
  4. Python逆向爬虫之pyquery,非常详细
  5. 在vue项目中使用UEditor--plus
  6. day24--Java集合07
  7. 「JOI 2015 Final」分蛋糕 2
  8. 一款类似B站的开源弹幕播放器,太酷了
  9. 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞
  10. 手写tomcat——编写一个echo http服务器