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

问题描述 投票:2回答:1

我有一个子类化模型,该模型通过子类化来实例化一些自定义层。我尝试使用keras.utils.plot_model(),但它所做的只是打印模型块,没有任何层出现。

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

Update:我深入研究了源代码,就像plot_model()首先检查了_is_graph_network属性。图形网络用于功能和顺序API。从源:

存在Networks的两种类型:图形网络和子类网络。图形Keras功能和顺序API中使用了网络。子类化用户将Model类子类化时,将使用网络。一般来说,Graph Networks比Subclassed支持更多的Keras功能网络,特别是:

  • 模型克隆(keras.models.clone()
  • 序列化(model.get_config()/from_config()model.to_json()/to_yaml()
  • 整体模型保存(model.save()

自定义图形组件)自然,我想知道是否可以构建图形网络组件,因此我的子类化模型/层可以使用这些功能。这需要很多努力吗?

tf。功能图可视化)有人可以让我知道通过Tensorboard进行图形可视化是否与Tensorflow2 tf.functions一起使用吗?在Tensorflow 1.x中,可以为一组逻辑操作定义名称范围(例如GAN中的生成器/区分器,VAE中的编码器/解码器以及损耗/度量),然后将它们显示为图形可视化中的高级块。我可以为tf.functions定义类似的东西吗?

python tensorboard tensorflow2.0
1个回答
1
投票

根据官方文档https://www.tensorflow.org/tensorboard/graphs,你可以

使用TensorFlow摘要跟踪API记录以下项目的签名函数TensorBoard中的可视化]

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

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
© www.soinside.com 2019 - 2024. All rights reserved.