Python 在tensorflow-2.0 beta中绘制子类模型

Python 在tensorflow-2.0 beta中绘制子类模型,python,tensorboard,tensorflow2.0,Python,Tensorboard,Tensorflow2.0,我有一个子类模型,它通过子类化实例化了一些自定义层。我尝试使用keras.utils.plot\u model(),但它所做的只是打印模型块,没有一个图层出现 Tensorflow专家对此有何评论?将来是否会实现此功能?如果不是,检查计算图的下一个最佳选择是什么?请注意,model.summary()仅提供自定义层参数的摘要,其中包含两个密集层。理想情况下,我喜欢看到所有的计算,如果这不是要求太多 更新:我深入研究了源代码,看起来像plot\u model(),首先检查\u is\u graph

我有一个子类模型,它通过子类化实例化了一些自定义层。我尝试使用
keras.utils.plot\u model()
,但它所做的只是打印模型块,没有一个图层出现

Tensorflow专家对此有何评论?将来是否会实现此功能?如果不是,检查计算图的下一个最佳选择是什么?请注意,
model.summary()
仅提供自定义层参数的摘要,其中包含两个密集层。理想情况下,我喜欢看到所有的计算,如果这不是要求太多

更新:我深入研究了源代码,看起来像plot\u model(),首先检查
\u is\u graph\u network
属性。图形网络用于函数式和顺序式API。来源:

存在两种类型的
网络
:图形网络和子类网络。图表 Keras功能性和顺序API中使用了网络。子类 当用户对
模型
类进行子类化时,将使用网络。一般来说 图形网络比子类网络支持更多的Keras功能 网络,特别是:

  • 模型克隆(
    keras.models.clone()
  • 序列化(
    model.get_-config()/from_-config()
    model.to_-json()/to_-yaml()
  • 整个模型保存(
    model.save()
自定义图形组件) 当然,我想知道我是否可以构建一个图形网络组件,这样我的子类模型/层就可以使用这些特性。这需要很多努力吗

tf.函数图可视化
有人能告诉我通过Tensorboard进行的图形可视化是否适用于Tensorflow2 tf.函数吗?在Tensorflow 1.x中,定义了一个ops逻辑组的名称范围(例如,GAN中的生成器/鉴别器、VAE中的编码器/解码器和损耗/度量),然后它们在图形可视化中显示为高级块。我可以为tf.函数定义类似的内容吗?

根据官方文档, 你可以

使用TensorFlow摘要跟踪API记录 张力板的可视化

下面是一个可视化子类模型的简单示例:

import tensorflow as tf

from tensorflow.keras import layers

class MyModel(tf.keras.Model):

  def __init__(self, num_classes=10):
    super(MyModel, self).__init__(name='my_model')
    self.num_classes = num_classes
    self.dense_1 = layers.Dense(32, activation='relu')
    self.dense_2 = layers.Dense(num_classes, activation='sigmoid')

  def call(self, inputs): 
    x = self.dense_1(inputs)
    return self.dense_2(x)

model = MyModel(num_classes=10)

model.compile(optimizer=tf.keras.optimizers.RMSprop(0.001),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))

@tf.function
def trace():
  data = np.random.random((1, 32))
  model(data)


logdir = "trace_log"
writer = tf.summary.create_file_writer(logdir)
tf.summary.trace_on(graph=True, profiler=True)
# Forward pass
trace()
with writer.as_default():
  tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=logdir)
然后可以使用Tensorboard检查计算图:

tensorboard --logdir trace_log

如果有人看到这一点,并知道谁可以帮助,请让我知道。我真的希望了解更多关于tensorflow2的内部工作原理。谢谢。你知道如何绘制使用子类技术创建的模型了吗?@DavidKWH如果你还在寻找答案,我已经发布了一个简单的解决方法。