gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:42:18 24 4
gpt4 key购买 nike

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

Tensorflow 专家可以对此发表评论吗?将来会实现此功能吗?如果不是,检查计算图的下一个最佳替代方案是什么?请注意,model.summary() 仅给出自定义层参数的汇总,其中包含两个密集层。理想情况下,我喜欢看到所有的计算,如果这不是要求太多的话......

更新:我深入研究了源代码,看起来 plot_model() 首先检查 _is_graph_network 属性。图网络用于功能和顺序 API。来自来源:

Two types of Networks exist: Graph Networks and Subclass Networks. Graph networks are used in the Keras Functional and Sequential APIs. Subclassed networks are used when a user subclasses the Model class. In general, more Keras features are supported with Graph Networks than with Subclassed Networks, specifically:

  • Model cloning (keras.models.clone())
  • Serialization (model.get_config()/from_config(), model.to_json()/to_yaml())
  • Whole-model saving (model.save())

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

(tf.函数图可视化)有人可以让我知道通过 Tensorboard 进行的图形可视化是否可以与 Tensorflow2 tf.functions 一起使用吗?在 Tensorflow 1.x 中,为一组逻辑操作定义名称范围(例如 GAN 中的生成器/鉴别器、VAE 中的编码器/解码器和损失/指标),然后它们在图形可视化中显示为高级 block .我可以为 tf.functions 定义类似的东西吗?

最佳答案

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

use TensorFlow Summary Trace API to log autographed functions for visualization in 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

关于python - 在 tensorflow-2.0 beta 中绘制子类模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57421766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com