使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图

Posted

技术标签:

【中文标题】使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图【英文标题】:Unable to see keras model graph in Tensorboard when using TensorFlow 2.0 Alpha 【发布时间】:2019-08-04 02:33:06 【问题描述】:

我正在尝试在 TensorFlow 2.0 alpha 上进行自定义训练,同时我正在尝试将一些指标和我的训练图添加到 TensorBoard。考虑以下人为设计的示例

import tensorflow as tf
from tensorflow.keras.layers import Dense, Input
from tensorflow.keras.models import Model


def create_model():
    inp = Input((32, ))
    net = Dense(16, activation="relu")(inp)
    net = Dense(8, activation="relu")(net)
    net = Dense(2, activation=None)(net)
    return Model(inp, net)


@tf.function
def grad(model, loss, x, y):
    with tf.GradientTape() as tape:
        y_ = model(x)
        loss_value = loss(y_true=y, y_pred=y_)
    return loss_value, tape.gradient(loss_value, model.trainable_variables)


@tf.function
def train_step(model, loss, optimizer, features, labels):
    loss_value, grads = grad(model, loss, features, labels)
    optimizer.apply_gradients(zip(grads, model.trainable_variables))
    return loss_value


def train():
    tf.summary.trace_on(graph=True, profiler=True)

    with tf.summary.create_file_writer("model").as_default():
        model = create_model()

        loss = tf.keras.losses.MeanSquaredError()
        optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)

        for i in range(10):
            tf.summary.experimental.set_step(i)

            features = tf.random.normal((16, 32))
            labels = tf.random.normal((16, 2))
            loss_value = train_step(model, loss, optimizer, features, labels)
            print(loss_value)

        tf.summary.trace_export("model", profiler_outdir="model")


if __name__ == "__main__":
    train()

这个,没有正确显示模型图,在做

tensorboard --logdir model

在图表标签中我看到

当我通过 model.fit 或 estimator 进行训练时,我得到了图表。例如,这是我使用model_to_estimator 转换模型时的图表部分

The guide article 不通过 tensorboard 跟踪指标,而且我没有找到任何有关在 alpha 版 (https://www.tensorflow.org/alpha) 上自定义添加和跟踪指标的新工作流程的部分。我设计的实现是基于 tf.summary (https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/summary) 的 API 文档

【问题讨论】:

【参考方案1】:

您可以使用tf.keras.utils.plot_model(model, show_shapes=True,show_dtype=True,rankdir="LR") 绘制 keras 模型图。

【讨论】:

以上是关于使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 2.0 新特性

TensorFlow Hub 模块可以在 TensorFlow 2.0 中使用吗?

Tensorflow 2.0 DLL load failed: 找不到指定的模块

在基础 Tensorflow 2.0 中运行简单回归

『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史

谷歌重磅发布TensorFlow 2.0正式版,高度集成Keras,大量性能改进