天天看点

【tensorflow2.0】15.keras中的tensorboard

    终于学到了我期待已久的tensorboard,在学tf1.x版本时候,我就喜欢上了这个功能,这真的是一个非常非常非常强大的可视化工具,也是Tensorflow的一个优点。学会使用TensorBoard,将可以帮助我们构建复杂模型。

    这里需要理解“可视化”的意义。“可视化”也叫做数据可视化。是关于数据之视觉表现形式的研究。这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。例如我们需要可视化算法运行的错误率,那么我们可以取算法每次训练的错误率,绘制成折线图或曲线图,来表达训练过程中错误率的变化。

【tensorflow2.0】15.keras中的tensorboard

    下边我们先来说一下使用tf.keras模块的Model.fit()下的tensorboard:

tf.keras.callbacks.TensorBoard(
    log_dir='logs', histogram_freq=0, write_graph=True, write_images=False,
    update_freq='epoch', profile_batch=2, embeddings_freq=0,
    embeddings_metadata=None, **kwargs
)
"""
log_dir:将要由TensorBoard解析的日志文件保存到的目录路径。
histogram_freq:计算模型各层的激活度和权重直方图的频率(以历元计)。如果设置为0,将不计算直方图。必须为直方图可视化指定验证数据(或拆分)。
write_graph:是否在TensorBoard中可视化图形。当write_graph设置为True时,日志文件可能会变得很大。
write_images:是否编写模型权重以在TensorBoard中可视化为图像。
update_freq:'batch'或'epoch'或整数。使用时'batch',每批之后将损失和指标写入TensorBoard。同样适用于'epoch'。如果使用整数,假设1000,回调将每1000个样本将指标和损失写入TensorBoard。请注意,向TensorBoard写入太频繁会减慢您的训练速度。
profile_batch:分析批次以采样计算特征。默认情况下,它将配置第二批。将profile_batch = 0设置为禁用性能分析。必须在TensorFlow急切模式下运行。
embeddings_freq:嵌入层可视化的频率(以历元计)。如果设置为0,则嵌入将不可见。
embeddings_metadata:将层名称映射到文件名的字典,该嵌入层的元数据保存在该文件名中。查看 有关元数据文件格式的 详细信息。如果相同的元数据文件用于所有嵌入层,则可以传递字符串。
"""
           
from __future__ import absolute_import, division, print_function, unicode_literals

import tensorflow as tf

from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model
import numpy as np
import datetime
print(tf.__version__)
print(np.__version__)

mnist = np.load("mnist.npz")
x_train, y_train, x_test, y_test = mnist['x_train'],mnist['y_train'],mnist['x_test'],mnist['y_test']

x_train, x_test = x_train / 255.0, x_test / 255.0

# Add a channels dimension
x_train = x_train[..., tf.newaxis]
x_test = x_test[..., tf.newaxis]

class MyModel(Model):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = Conv2D(32, 3, activation='relu')
        self.flatten = Flatten()
        self.d1 = Dense(128, activation='relu')
        self.d2 = Dense(10, activation='softmax')
    @tf.function
    def call(self, x):
        x = self.conv1(x)
        x = self.flatten(x)
        x = self.d1(x)
        return self.d2(x)


model = MyModel()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

#keras下的tensorboard调用非常简单,只需要在这里定义一个变量,设置好对应的参数,然后写进model.fit中的callbacks即可
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir="keras_logv2", 
                                                      histogram_freq=1,
                                                      profile_batch = 100000000)

model.fit(x=x_train, 
          y=y_train, 
          epochs=20, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])
           

下边说一下如何在windows下打开我们下载好的图

#打开Anaconda Prompt,进入到上述目录下,激活tensorflow环境,命令行输入
tensorboard --logdir='地址(注意这里的地址是指我们设置的文件夹所在的目录,也就是上边代码中keras_logv2文件夹所在的目录)'
#然后Anaconda Prompt会出现一个网址 我们打开网址即可
           

继续阅读