python-3.x - 张量板。重复的图形节点:一个与占位符不连接,一个连接
问题描述
我正在尝试在 TensorBoard 上可视化我的模型图。我正在使用 Keras 2.1.5 和 tensorflow-gpu 1.13.1。我的模型是卷积层的串联,最后是一个自定义层,我在其中使用张量进行一些操作。一切正常,尽管我在自定义层的末尾和开头定义了一些打印,然后在我调用一次时检查 Python 是否两次输入了我的代码。
我正在运行一些培训并检查 TensorBoard 上的模型图,然后发现了一些我在网络上的任何其他示例中都没有看到的东西:
我的自定义层 (trans2img) 有一个连接图,另一个未连接且以空占位符作为输入。我不明白原因。
这是我的代码的一个简单示例:
def custom_layer(inputs):
with tf.name_scope('trans2img'):
a = inputs[0]
def some_operation(a):
with tf.name_scope('op1'):
b = 2*a
return b
def some_other_op(b, c):
with tf.name_scope('op2'):
d = b/c
return d
b = some_operation(a)
d = some_other_op(b, inputs[1])
return d
之后,在我的网络定义文件中,我将此自定义层加载为from custom_layer import custom_layer
,然后将其用作 Lambda 层:
net = Lambda(custom_layer)[branch1, branch2]
我不知道是因为我在 custom_layer 中定义内部操作的方式还是我调用它们的方式。我想知道如何解释我得到的第二个未连接图,以及它是否是 unnineficientcode 的指标。我将不胜感激任何线索和帮助。
解决方案
当您使用多个 tf 范围时会发生此问题。
对于每个范围,它使用“op_{integer}”创建一个新操作。
您需要使用“absolute_name_scope(scope)”来解决您的问题。
请参考以下链接了解如何使用它。
https://github.com/tensorflow/tensorflow/issues/9545
https://github.com/tensorflow/tensorflow/pull/23250/commits/1169eaca048b660905fc5776e617cc824a19b125
推荐阅读
- firebase - 如何处理来自 Google 的此警告电子邮件:Google Cloud Platform 的可公开访问的 Google API 密钥?
- powershell - 为什么 PS Get-ChildItem 这么难
- c++ - Poco C++ 库发送异步服务器回复
- android - OnCompleteListener 的问题
在科特林 - mysql - 从没有用户定义变量的有序值中查找值范围?
- python - 基本 Flask 应用程序未在 Heroku Postgres 数据库中创建表
- deployment - 如何在远程服务器上部署网站,以便局域网中的其他人只能使用 IP 地址和端口号访问它?
- laravel - 如何使用按钮清除数据?拉拉维尔
- asp.net - 如何在中继器控件中显示响应式图片库?
- python - Tkinter - 同时使用滑块旋转图像