政安晨:示例演绎TensorFlow的官方指南(三){快速使用数据可视化工具TensorBoard}

这篇文章里咱们演绎TensorFLow的数据可视化工具:TensorBoard

在机器学习中,要改进模型的某些参数,您通常需要对其进行衡量。TensorBoard 是用于提供机器学习工作流期间所需测量和呈现的工具。它使您能够跟踪实验指标(例如损失和准确率),呈现模型计算图,将嵌入向量投影到较低维度的空间等。



准备环境

咱们基于本地环境尝试使用tensorboard(本地环境演绎,更有助于熟悉这套工具),不熟悉如何搭建tensorflow本地环境的小伙伴可以参考我的这篇文章:

政安晨的机器学习笔记——跟着演练快速理解TensorFlow(适合新手入门)icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/135950931准备好环境之后,打开Jupyter Notebook,咱们就开始啦。

我使用了已经安装好TensorFlow的虚拟环境:

开始使用

# 加载TensorBoard笔记本扩展
%load_ext tensorboard

在笔记本(Jupyter Notebook)中执行上述语句,如果在CMD中就不要加%。

import tensorflow as tf
import datetime

咱们在本例中依然还是使用 MNIST数据集(这个数据集已经被使用了无数次啦,经常用于各种DEMO演示)。

接下来编写一个函数对数据进行标准化,同时创建一个简单的Keras模型使图像分为10类。

mnist = tf.keras.datasets.mnist(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0def create_model():return tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28, 28), name='layers_flatten'),tf.keras.layers.Dense(512, activation='relu', name='layers_dense'),tf.keras.layers.Dropout(0.2, name='layers_dropout'),tf.keras.layers.Dense(10, activation='softmax', name='layers_dense_2')])

通过 Keras Model.fit() 使用 TensorBoard

当使用 Keras's Model.fit() 函数进行训练时, 添加 tf.keras.callback.TensorBoard 回调可确保创建和存储日志.另外,在每个时期启用 histogram_freq=1 的直方图计算功能(默认情况下处于关闭状态)

将日志放在带有时间戳的子目录中,以便轻松选择不同的训练运行。

model = create_model()
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)model.fit(x=x_train, y=y_train, epochs=5, validation_data=(x_test, y_test), callbacks=[tensorboard_callback])

执行如下:

通过命令行 (command) 或在 notebook 体验中启动 TensorBoard ,这两个接口通常是相同的。 在 notebooks, 使用 %tensorboard 命令。 在命令行中, 运行不带“%”的相同命令。

%tensorboard --logdir logs/fit

启动像这样:

在此示例中创建的可视化效果的简要概述以及可以找到它们的信息中心

(顶部导航栏中的标签页):

  • 标量显示损失和指标在每个周期如何变化。您还可以使用它们跟踪训练速度、学习率和其他标量值。可以在 Time Series 或 Scalars 信息中心找到标量。
  • 计算图可以帮助您呈现模型。在这种情况下,将显示层的 Keras 计算图,这可以帮助您确保正确构建。可以在 Graphs 信息中心找到计算图。
  • 直方图分布显示张量随时间的分布。这对于呈现权重和偏差并验证它们是否以预期的方式变化很有用。可以在 Time Series 或 Histograms 信息中心中找到直方图。可以在 Distributions 信息中心中找到分布。

当您记录其他类型的数据时,会自动启用其他 TensorBoard 信息中心。 例如,使用 Keras TensorBoard 回调还可以记录图像和嵌入向量。您可以通过点击右上角的“inactive”下拉列表来查看 TensorBoard 中还有哪些其他信息中心。

通过其他方法使用 TensorBoard

用以下方法训练时,例如 tf.GradientTape(), 会使用 tf.summary 记录所需的信息。

使用与上述相同的数据集,但将其转换为 tf.data.Dataset 以利用批处理功能:

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test))train_dataset = train_dataset.shuffle(60000).batch(64)
test_dataset = test_dataset.batch(64)

训练代码遵循 advanced quickstart 教程,但显示了如何将 log 记录到 TensorBoard 。 首先选择损失和优化器:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()

创建可用于在训练期间累积值并在任何时候记录的有状态指标:

# Define our metrics
train_loss = tf.keras.metrics.Mean('train_loss', dtype=tf.float32)
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('train_accuracy')
test_loss = tf.keras.metrics.Mean('test_loss', dtype=tf.float32)
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('test_accuracy')

定义训练和测试代码:

def train_step(model, optimizer, x_train, y_train):with tf.GradientTape() as tape:predictions = model(x_train, training=True)loss = loss_object(y_train, predictions)grads = tape.gradient(loss, model.trainable_variables)optimizer.apply_gradients(zip(grads, model.trainable_variables))train_loss(loss)train_accuracy(y_train, predictions)def test_step(model, x_test, y_test):predictions = model(x_test)loss = loss_object(y_test, predictions)test_loss(loss)test_accuracy(y_test, predictions)

设置摘要编写器,以将摘要写到另一个日志目录中的磁盘上:

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
train_log_dir = 'logs/gradient_tape/' + current_time + '/train'
test_log_dir = 'logs/gradient_tape/' + current_time + '/test'
train_summary_writer = tf.summary.create_file_writer(train_log_dir)
test_summary_writer = tf.summary.create_file_writer(test_log_dir)

开始训练。使用 tf.summary.scalar() 在摘要编写器范围内的训练/测试期间记录指标(损失和准确率)以将摘要写入磁盘。您可以控制记录哪些指标以及记录的频率。其他 tf.summary 函数可以记录其他类型的数据。

model = create_model() # reset our modelEPOCHS = 5for epoch in range(EPOCHS):for (x_train, y_train) in train_dataset:train_step(model, optimizer, x_train, y_train)with train_summary_writer.as_default():tf.summary.scalar('loss', train_loss.result(), step=epoch)tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)for (x_test, y_test) in test_dataset:test_step(model, x_test, y_test)with test_summary_writer.as_default():tf.summary.scalar('loss', test_loss.result(), step=epoch)tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'print (template.format(epoch+1,train_loss.result(), train_accuracy.result()*100,test_loss.result(), test_accuracy.result()*100))# Reset metrics every epochtrain_loss.reset_states()test_loss.reset_states()train_accuracy.reset_states()test_accuracy.reset_states()

再次打开 TensorBoard,这次将其指向新的日志目录。 我们也可以启动 TensorBoard 来监视训练进度。

%tensorboard --logdir logs/gradient_tape

您现在已经了解了如何通过 Keras 回调和通过 tf.summary 使用 TensorBoard 来实现更多自定义场景。

TensorBoard.dev:托管并共享您的机器学习实验结果

TensorBoard.dev 是一项免费的公共服务,可让您上传您的 TensorBoard 日志并获得可在学术论文、博文、社交媒体等中与所有人共享的永久链接。这有助于实现更好的重现性和协作。

要使用 TensorBoard.dev,请运行以下命令:

!tensorboard dev upload \--logdir logs/fit \--name "(optional) My latest experiment" \--description "(optional) Simple comparison of several hyperparameters" \--one_shot

请注意,此调用使用感叹号前缀 (!) 来调用 shell,而不是使用百分比前缀 (%) 来调用 colab 魔法。从命令行调用此命令时,不需要任何前缀。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2776817.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

54.螺旋矩阵(Java)

题目描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 输入: matrix [[1,2,3],[4,5,6],[7,8,9]] 输出: [1,2,3,6,9,8,7,4,5] 代码实现: import java.util.ArrayLi…

Linux操作系统基础(四):Linux连接工具使用

文章目录 Linux连接工具使用 一、为什么要使用远程连接工具 二、虚拟机网络配置 三、获取Linux操作系统IP地址 四、聊一聊Linux系统账号 五、安装finalshell远程连接软件 六、建立连接 七、软件界面与使用说明 Linux连接工具使用 一、为什么要使用远程连接工具 因为一…

【蓝桥杯冲冲冲】Prime Gift

【蓝桥杯冲冲冲】Prime Gift 蓝桥杯备赛 | 洛谷做题打卡day31 文章目录 蓝桥杯备赛 | 洛谷做题打卡day31Prime Gift题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题解代码我的一些话 Prime Gift 题面翻译 给你 n n n 个…

入门指南|Chat GPT 的兴起:它如何改变数字营销格局?

随着数字营销的不断发展,支持数字营销的技术也在不断发展。OpenAI 的 ChatGPT 是一项备受关注的突破性工具。凭借其先进的自然语言处理能力,ChatGPT 已被证明是全球营销人员的宝贵资产。在这份入门指南中,我们将探讨Chat GPT对数字营销专家及…

Composition Local

1.显示传参 package com.jmj.jetpackcomposecompositionlocalimport org.junit.Testimport org.junit.Assert.*/*** 显示传参*/ class ExplicitText {private fun Layout(){var color:String "黑色";//参数需要通过层层传递,比较繁琐Text(color)Grid(c…

思腾云计算中心 | 5千平米超大空间,基础设施完善,提供裸金属GPU算力租赁业务

2021年,思腾合力全资收购包头市易慧信息科技有限公司,正式开启云计算业务。思腾云计算中心占地2400平米,位于包头市稀土高新区,毗邻多家知名企业,地理位置优越,交通便利,是区内重要的信息化产业…

公有云服务器:功能与性能的完美融合

在数字化浪潮下,云服务器已经成为企业及个人用户存储数据、运行应用的重要基础设施。其中,公有云服务器凭借其诸多优势,更是受到了市场的广泛欢迎。上海悠远将为您详细介绍公有云服务器的功能特点,以及如何进行性能测试。 一、公有…

03-抓包_封包_协议_APP_小程序_PC应用_WEB应用

抓包_封包_协议_APP_小程序_PC应用_WEB应用 一、参考工具二、演示案例:2.1、WEB应用站点操作数据抓包-浏览器审查查看元素网络监听2.2、APP&小程序&PC抓包HTTP/S数据-Charles&Fiddler&Burpsuite2.3、程序进程&网络接口&其他协议抓包-WireSh…

MES生产制造管理:汽车零部件生产MES解决方案

某某汽车部件科技有限公司是一家铝合金零部件研发、压铸和精加工为一体的高新技术企业,拥有先进压铸、机加、检测等设备,并配套自动化生产线。为解决发动机支架等产品的全程生产质量追溯和实现机台设备联网,梅施科技提供了车间级的MES解决方案,如图所示: 梅施科技采…

Idea里自定义封装数据警告解决 Spring Boot Configuration Annotation Processor not configured

我们自定对象封装指定数据&#xff0c;封装类上面一个红色警告&#xff0c;虽然不影响我们的执行&#xff0c;但是有强迫症看着不舒服&#xff0c; 去除方式&#xff1a; 在pom文件加上坐标刷新 <dependency><groupId>org.springframework.boot</groupId><…

【深度学习】Softmax实现手写数字识别

实训1&#xff1a;Softmax实现手写数字识别 相关知识点: numpy科学计算包&#xff0c;如向量化操作&#xff0c;广播机制等 1 任务目标 1.1 简介 本次案例中&#xff0c;你需要用python实现Softmax回归方法&#xff0c;用于MNIST手写数字数据集分类任务。你需要完成前向计算…

24 SEMC相关

文章目录 24.1 SEMC 简介24.2 SEMC 框图剖析24.2.1 通讯引脚24.2.1.1 SEMC 的片选信号24.2.1.2 数据选通信号 DQS 24.2.2 存储器控制器24.2.3 IP 命令和 AXI 命令24.2.4 驱动时钟 24.4 SEMC 初始化配置结构体24.4.1 dqsMode24.4.2 cmdTimeoutCycles24.4.3 busTimeoutCycles24.4…

无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解

在现代科技领域中&#xff0c;无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加&#xff0c;无人机技术也在不断发展和改进。在众多的无人机技术中&#xff0c;无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…

鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;央视新闻 入局鸿蒙 来自 HarmonyOS 微博2月9日消息&#xff0c;#央视新闻启动鸿蒙原生应用开发#中央广播电视总台旗舰央视新闻客户端正式宣布&#xff0c;将基于HarmonyOS NEXT鸿蒙星河版&#xff0c;启动央视新闻 鸿蒙原生应用开发&#xf…

《MySQL 简易速速上手小册》第10章:未来趋势和进阶资源(2024 最新版)

文章目录 10.1 MySQL 在云计算和容器化中的应用10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 Python 部署 MySQL 到 Kubernetes10.1.3 拓展案例 1&#xff1a;在 AWS RDS 上部署 MySQL 实例10.1.4 拓展案例 2&#xff1a;使用 Docker 部署 MySQL 10.2 MySQL 和 NoSQL 的整合…

【软考】系统集成项目管理工程师(十五)文档和配置管理【2分】

一、 文档管理 二、配置管理 1、配置项 基线类型基线包括管理原则基线配置项所有设计文档和源程序向开发人员开放读取的权限非基线配置项项目的各类计划额报告向PM、CCB及相关人员开放所有配置项的操作权限应由CMO&#xff08;配置管理员&#xff09;严格管理 2、基线 3、配置…

可达鸭二月月赛——基础赛第六场(周五)题解,这次四个题的题解都在这一篇文章内,满满干货,含有位运算的详细用法介绍。

姓名 王胤皓 T1 题解 T1 题面 T1 思路 样例输入就是骗人的&#xff0c;其实直接输出就可以了&#xff0c;输出 Hello 2024&#xff0c;注意&#xff0c;中间有一个空格&#xff01; T1 代码 #include<bits/stdc.h> using namespace std; #define ll long long int …

自制微信红包封面

一.前言 这不是过年了吗&#xff0c;各大平台都发放了免费的微信红包封面&#xff0c;但我老是抢不到QAQ。于是乎&#xff0c;我便想“授人以鱼不如授人以渔”&#xff0c;不如自己造个封面。 二.主要步骤 1.条件 1>创建视频号 2>过去一年发表过视频号 3>过去一…

春节:当代发展及创新传承

为了解中国传统节日——春节&#xff0c;2024年2月9日&#xff0c;曲阜师范大学计算机学院“古韵新声&#xff0c;格物致‘知’”实践队队员贾宣在山东省青岛市西海岸新区的商场中进行了街头调查&#xff0c;探究春节的发展与当代意义。 春节历史悠久&#xff0c;起源于早期人…

Educational Codeforces Round 145 (Rated for Div. 2)C. Sum on Subarrays(构造)

很意思的一道构造题 题意&#xff1a;给一个 n 、 k n、k n、k&#xff0c;让构造长度为n的数组满足&#xff0c;子数组为整数的个数为k个&#xff0c;负数的为 k − ( n 1 ) ∗ n / 2 k-(n1)* n/2 k−(n1)∗n/2,每个数的范围为 [ − 1000 , 1000 ] [-1000,1000] [−1000,10…