首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TensorFlow 2.0 - TensorBoard中没有显示的图形

TensorFlow 2.0 - TensorBoard中没有显示的图形
EN

Stack Overflow用户
提问于 2019-03-26 19:58:25
回答 1查看 1.9K关注 0票数 4

我试图在TensorBoard中显示深度自动编码器的图形。

我在用于培训的函数上调用了装饰器@tf.function,并成功地使用model.summary()打印了摘要,因此应该存在图形。

为了显示图,我在训练循环中调用了summary.trace_on()

代码语言:javascript
复制
import os
import shutil

import numpy as np
import tensorflow as tf
from tensorflow.keras import Model
from tensorflow.keras.layers import Dense, Layer

from utils import log_results, mse, preprocess_mnist, train_autoencoder


class DeepEncoder(Layer):
    def __init__(self, intermediate_dims):
        super(DeepEncoder, self).__init__()
        self.layers = [
            Dense(units=i, activation=tf.nn.relu) for i in intermediate_dims
        ]

    def call(self, X):
        Z = X
        for layer in self.layers:
            Z = layer(Z)
        return Z


class DeepDecoder(Layer):
    def __init__(self, original_dim, intermediate_dims):
        super(DeepDecoder, self).__init__()
        self.layers = [
            Dense(units=i, activation=tf.nn.relu)
            for i in reversed(intermediate_dims[:-1])
        ]
        self.layers.append(Dense(units=original_dim))

    def call(self, X):
        Z = X
        for layer in self.layers:
            Z = layer(Z)
        return Z


class DeepAutoEncoder(Model):
    def __init__(self, original_dim, intermediate_dims):
        super(DeepAutoEncoder, self).__init__()
        self.encoder = DeepEncoder(intermediate_dims=intermediate_dims)
        self.decoder = DeepDecoder(
            original_dim=original_dim, intermediate_dims=intermediate_dims)

    def call(self, X):
        return self.decoder(self.encoder(X))

    def encode(self, X):
        return self.encoder(X)

    def decode(self, Z):
        return self.decode(Z)


def test_deep_autoencoder(batch_size,
                          learning_rate,
                          epochs,
                          max_outputs=4,
                          seed=None):

    tf.random.set_seed(seed)

    X_train, X_test, train_dataset, _, _, _ = preprocess_mnist(
        batch_size=batch_size)

    autoencoder = DeepAutoEncoder(
        original_dim=784, intermediate_dims=[1024, 256, 64])
    opt = tf.optimizers.Adam(learning_rate=learning_rate)

    log_path = 'logs/deepautoencoder'
    if os.path.exists(log_path):
        shutil.rmtree(log_path)

    writer = tf.summary.create_file_writer(log_path)

    with writer.as_default():
        with tf.summary.record_if(True):
            for epoch in range(epochs):
                for step, batch in enumerate(train_dataset):
                    train_autoencoder(mse, autoencoder, opt, batch)

                # logs (train)
                train_loss = log_results(
                    model=autoencoder,
                    X=X_train,
                    max_outputs=max_outputs,
                    epoch=epoch,
                    prefix='train')

                # logs (test)
                test_loss = log_results(
                    model=autoencoder,
                    X=X_test,
                    max_outputs=max_outputs,
                    epoch=epoch,
                    prefix='test')

                tf.summary.trace_on()

                writer.flush()

                template = 'Epoch {}, Train loss: {:.5f}, Test loss: {:.5f}'
                print(
                    template.format(epoch + 1, train_loss.numpy(),
                                    test_loss.numpy()))

    if not os.path.exists('saved_models'):
        os.makedirs('saved_models')
    np.savez_compressed('saved_models/deepencoder.npz',
                        *autoencoder.encoder.get_weights())


if __name__ == '__main__':
    test_deep_autoencoder(batch_size=128, learning_rate=1e-3, epochs=20)

我希望图表能在TensorBoard中显示出来,但情况似乎并非如此。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-14 01:29:24

您需要在跟踪执行之后调用tf.summary.trace_export,以便将跟踪实际写入磁盘。

请参阅在……上面导出的文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55365322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档