tensorflow 2.0 学习 (九) tensorboard可视化功能认识

代码如下:

# encoding :utf-8

import io  # 文件数据流
import datetime
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
# 导入常见网络层, sequential容器, 优化器, 损失函数
from tensorflow.keras import layers, Sequential, optimizers, losses, metrics
import os # 运维模块, 调用系统命令
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘  # 只显示warring和error

def preprocess(x, y):
    x = tf.cast(x, dtype=tf.float32) / 255.
    y = tf.cast(y, dtype=tf.int32)
    return x, y

def plot_to_image(figure):
    buf = io.BytesIO()  # 在内存中存储画
    plt.savefig(buf, format=‘png‘)
    plt.close(figure)
    buf.seek(0)
    # 传化为TF 图
    image = tf.image.decode_png(buf.getvalue(), channels=4)
    image = tf.expand_dims(image, 0)
    return image

def image_grid(images):
    # 返回一个5x5的mnist图像
    figure  = plt.figure(figsize=(10, 10))
    for i in range(25):
        plt.subplot(5, 5, i+1, title=‘name‘)
        plt.xticks([])
        plt.yticks([])
        plt.grid(False)
        plt.imshow(images[i], cmap=plt.cm.binary)
    return figure

batchsz = 128
path = r‘G:\2019\python\mnist.npz‘
(x, y), (x_val, y_val) = tf.keras.datasets.mnist.load_data(path)
print(‘datasets:‘, x.shape, y.shape, x.min(), x.max())

db = tf.data.Dataset.from_tensor_slices((x,y))
db = db.map(preprocess).shuffle(60000).batch(batchsz).repeat(10)
ds_val = tf.data.Dataset.from_tensor_slices((x_val, y_val))
ds_val = ds_val.map(preprocess).batch(batchsz, drop_remainder=True)

network = Sequential([
    layers.Dense(256, activation=‘relu‘),
    layers.Dense(128, activation=‘relu‘),
    layers.Dense(64, activation=‘relu‘),
    layers.Dense(32, activation=‘relu‘),
    layers.Dense(10)
])

network.build(input_shape=(None, 28*28))
network.summary()
optimizer=optimizers.Adam(lr=0.01)

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
log_dir = ‘logs/‘ + current_time
summary_writer = tf.summary.create_file_writer(log_dir)  # 创建监控类,监控数据写入到log_dir目录

sample_img = next(iter(db))[0]
sample_img = sample_img[0]  # 第一张图
sample_img = tf.reshape(sample_img, [1, 28, 28, 1])
with summary_writer.as_default():  # 写入环境
    tf.summary.image("Training sample:", sample_img, step=0)

for step, (x, y) in enumerate(db):    # 遍历切分好的数据step:0->599
    with tf.GradientTape() as tape:
        x = tf.reshape(x, (-1, 28*28))
        out = network(x)
        y = tf.one_hot(y, depth=10)
        loss = tf.reduce_mean(tf.losses.categorical_crossentropy(y, out, from_logits=True))

    grads = tape.gradient(loss, network.trainable_variables)
    optimizer.apply_gradients(zip(grads, network.trainable_variables))

    if step % 100 == 0:
        print(step, ‘loss:‘, float(loss))  # 读统计数据
        with summary_writer.as_default():
            tf.summary.scalar(‘train-loss‘, float(loss), step=step)  # 将loss写入到train-loss中

    if step % 500 == 0:
        total, total_correct = 0., 0

        for _, (m, n) in enumerate(ds_val):
            m = tf.reshape(m, (-1, 28*28))
            out = network(m)
            pred = tf.argmax(out, axis=1)
            pred = tf.cast(pred, dtype=tf.int32)
            correct = tf.equal(pred, n)
            total_correct += tf.reduce_sum(tf.cast(correct, dtype=tf.int32)).numpy()
            total += m.shape[0]

        print(step, ‘Evaluate Acc:‘, total_correct / total)

        val_images = m[:25]
        val_images = tf.reshape(val_images, [-1, 28, 28, 1])
        with summary_writer.as_default():
            tf.summary.scalar(‘test-acc‘, float(total_correct / total), step=step)  # 写入测试准确率
            tf.summary.image("val-onebyone-images:", val_images, max_outputs=25, step=step)  # 可视化测试用图片,25张
            val_images = tf.reshape(val_images, [-1, 28, 28])
            figure = image_grid(val_images)
            tf.summary.image(‘val-images:‘, plot_to_image(figure), step=step)

后台cmd下,输入:tensorboard --logdir "C:\Users\Z He\PycharmProjects\he-learn\logs";

复制链接,在edge中打开,如下:

loss率

准确率:

图像:

可视化确实有助于认识学习的效果,今后尽可能用上可视化。

下次更新,拟合与过拟合中的关于月牙形图像处理的例子。

原文地址:https://www.cnblogs.com/heze/p/12145166.html

时间: 2024-10-08 17:40:16

tensorflow 2.0 学习 (九) tensorboard可视化功能认识的相关文章

tensorflow 2.0 学习 (七) 反向传播代码逐步实现

数据集为: 代码为: 1 # encoding: utf-8 2 3 import tensorflow as tf 4 import numpy as np 5 import seaborn as sns 6 import matplotlib.pyplot as plt 7 from sklearn.datasets import make_moons 8 # from sklearn.datasets import make_circles 9 from sklearn.model_sel

tensorflow 1.0 学习:用CNN进行图像分类

tensorflow升级到1.0之后,增加了一些高级模块: 如tf.layers, tf.metrics, 和tf.losses,使得代码稍微有些简化. 任务:花卉分类 版本:tensorflow 1.0 数据:http://download.tensorflow.org/example_images/flower_photos.tgz 花总共有五类,分别放在5个文件夹下. 闲话不多说,直接上代码,希望大家能看懂:) # -*- coding: utf-8 -*- from skimage im

tensorflow 1.0 学习:用别人训练好的模型来进行图像分类

谷歌在大型图像数据库ImageNet上训练好了一个Inception-v3模型,这个模型我们可以直接用来进来图像分类. 下载地址:https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip 下载完解压后,得到几个文件: 其中的classify_image_graph_def.pb 文件就是训练好的Inception-v3模型. imagenet_synset_to_human_label

tensorflow 1.0 学习:参数初始化(initializer)

CNN中最重要的就是参数了,包括W,b. 我们训练CNN的最终目的就是得到最好的参数,使得目标函数取得最小值.参数的初始化也同样重要,因此微调受到很多人的重视,那么tf提供了哪些初始化参数的方法呢,我们能不能自己进行初始化呢? 所有的初始化方法都定义在tensorflow/python/ops/init_ops.py 1.tf.constant_initializer() 也可以简写为tf.Constant() 初始化为常数,这个非常有用,通常偏置项就是用它初始化的. 由它衍生出的两个初始化方法

tensorflow 1.0 学习:模型的保存与恢复(Saver)

将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情.tf里面提供模型保存的是tf.train.Saver()模块. 模型保存,先要创建一个Saver对象:如 saver=tf.train.Saver() 在创建这个Saver对象的时候,有一个参数我们经常会用到,就是 max_to_keep 参数,这个是用来设置保存模型的个数,默认为5,即 max_to_keep=5,保存最近的5个模型.如果你想每训练一代(epoch)就想保存一次模型,则可以将 max_to_keep设置

tensorflow 2.0 学习 (六) Himmelblua函数求极值

Himmelblua函数在(-6,6),(-6,6)的二维平面上求极值 函数的数学表达式:f(x, y) = (x**2 + y -11)**2 + (x + y**2 -7)**2: 如下图所示 等高线如下图所示: 代码如下: # encoding: utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpl_toolkits

tensorflow 2.0 学习 (十一)卷积神经网络 (一)MNIST数据集训练与预测 LeNet-5网络

网络结构如下: 代码如下: 1 # encoding: utf-8 2 3 import tensorflow as tf 4 from tensorflow import keras 5 from tensorflow.keras import layers, Sequential, losses, optimizers, datasets 6 import matplotlib.pyplot as plt 7 8 Epoch = 30 9 path = r'G:\2019\python\mn

Tensorflow学习笔记3:TensorBoard可视化学习

TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, TensorBoard工作机制 TensorBoard 通过读取 TensorFlow 的事件文件来运行.TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据.关于TensorBoard的详细介绍请参考TensorBoard:可视化学习.下面做个简单介绍. Tensorf

从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?

开源的深度学习神经网络正步入成熟,而现在有许多框架具备为个性化方案提供先进的机器学习和人工智能的能力.那么如何决定哪个开源框架最适合你呢?本文试图通过对比深度学习各大框架的优缺点,从而为各位读者提供一个参考.你最看好哪个深度学习框架呢? 现在的许多机器学习框架都可以在图像识别.手写识别.视频识别.语音识别.目标识别和自然语言处理等许多领域大展身手,但却并没有一个完美的深度神经网络能解决你的所有业务问题.所以,本文希望下面的图表和讲解能够提供直观方法,帮助读者解决业务问题. 下图总结了在 GitH