用TensorBoard可视化tensorflow神经网络模型结构与训练过程的方法

简介: 用TensorBoard可视化tensorflow神经网络模型结构与训练过程的方法

  本文介绍基于TensorBoard工具,对tensorflow库构建的神经网络模型加以可视化,并对其训练过程中的损失函数Loss)、精度指标Metric)等的变化情况加以可视化的方法。

  在之前的两篇文章基于Python TensorFlow Estimator的深度学习回归与分类代码——DNNRegressorhttps://blog.csdn.net/zhebushibiaoshifu/article/details/114001720)与基于Python TensorFlow Keras的深度学习回归代码——keras.Sequential深度神经网络https://blog.csdn.net/zhebushibiaoshifu/article/details/114016531)中,我们介绍了利用Python中的tensorflow库,实现机器学习深度学习的具体思路与代码实现;此外,我们也曾介绍过神经网络模型可视化的方法,例如基于Python的神经网络模型结构框架可视化绘图简便方法https://blog.csdn.net/zhebushibiaoshifu/article/details/116212113)以及神经网络模型结构框架可视化的在线与软件绘图方法https://blog.csdn.net/zhebushibiaoshifu/article/details/116723916)等。但是,一直没有介绍过基于tensorflow库中的TensorBoard工具,对神经网络模型,以及其训练过程中各项参数变化情况加以可视化的方法;这篇文章就对其加以具体介绍。

  TensorBoardTensorFlow提供的一个可视化工具,可以帮助用户更好地理解和调试TensorFlow模型。它提供了各种图表和面板,可以展示模型的训练过程、性能指标、网络结构、数据分布等信息。

  首先,为了使用TensorBoard进行可视化,需要在代码中添加TensorBoard回调函数。在模型训练时,每个epoch结束时将记录模型的性能和其他相关信息,并将它们写入TensorBoard日志目录中。以下是添加TensorBoard回调函数的示例代码。

from tensorflow.keras.callbacks import TensorBoard
# 创建TensorBoard回调函数并指定日志目录
tensorboard_callback = TensorBoard(log_dir = "E:/01_Reflectivity/03_Code")
# 在fit()函数中将TensorBoard回调函数添加到回调列表中
model.fit(train_data, train_targets, epochs=50, batch_size=64, validation_data=(test_data, test_targets), callbacks=[tensorboard_callback])

  当然,很显然上述代码只是一个添加TensorBoard回调函数的示例代码,并不是tensorflow库实现神经网络模型的全部代码;如果大家需要全部的代码,可以参考基于Python TensorFlow Keras的深度学习回归代码——keras.Sequential深度神经网络https://blog.csdn.net/zhebushibiaoshifu/article/details/114016531)这篇文章,这里就不再赘述了。

  上述代码中,log_dir是大家存放日志的目录,大家可以自行修改。

  随后,启动TensorBoard服务器。在终端中输入以下命令来启动TensorBoard服务器。

tensorboard --logdir=E:\01_Reflectivity\03_Code

  其中,最后的路径就是前面我们提到的存放日志的路径。随后,运行上述代码,如下图所示。

  接下来,在浏览器中查看TensorBoard。在浏览器中访问http://localhost:6006/,就可以看到TensorBoard的主界面了。在界面上,你可以查看模型的架构、性能指标、激活直方图等信息。如下图所示。

  TensorBoard中的主要面板包括以下几个:

Scalars:展示训练过程中的标量指标,比如训练误差、验证误差、学习率等。

Graphs:展示计算图,可以看到每一层的输入输出,以及参数的维度和数值。

Distributions:展示数据分布情况,可以查看权重、梯度、激活值等的分布情况,有助于诊断过拟合或欠拟合等问题。

Histograms:展示数据分布的直方图,类似于Distributions,但更详细。

Images:展示图像数据,可以查看输入图片、卷积层的输出等。

Projector:展示高维数据的嵌入情况,可以对数据进行降维可视化。

Text:展示文本数据,可以查看文本分类、生成等任务的结果。

  总之,TensorBoard提供了丰富的可视化功能,可以帮助用户更好地理解和优化模型。

  其中,我们往往对ScalarsGraphs面板比较感兴趣,我们也就在此主要谈谈这两个部分。

  当我们训练模型时,可能会想要实时监控模型的训练情况,比如损失函数的变化、准确率的变化等。TensorBoard提供了Scalars界面,可以方便地对这些指标进行可视化;如下图所示。

  在代码中,我们可以使用tf.summary.scalar函数将指标写入TensorBoard日志文件中。

  其次,介绍一下Graphs界面。在TensorFlow中,Graphs(图)是表示神经网络的计算图,包括各个层之间的连接、每个层的参数以及激活函数等等。Graphs界面可以用于可视化TensorFlow计算图的结构,从而更好地理解神经网络的计算过程。如下图所示。

  在Graphs界面中,可以看到神经网络中每一层的名称和形状,以及层与层之间的连接。通过单击每个层,可以查看该层的详细信息,包括该层的参数、激活函数等等。此外,Graphs界面还可以显示每个变量和操作的名称,以及它们在计算图中的位置。

  通过Graphs界面,可以更好地理解神经网络的计算过程,发现神经网络中可能存在的问题,并对神经网络的结构进行优化。同时,Graphs界面还可以与TensorBoard的其他界面(如ScalarsHistograms等)进行配合使用,进一步提升神经网络的可视化效果和调试能力。

  此外,TensorBoard还具有非常巨大的功能,大家具体可以查阅其官方帮助文档。

欢迎关注:疯狂学习GIS

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
1731 56
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
469 58
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
421 2
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
355 1
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
991 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
2596 13
|
网络协议 中间件 网络安全
计算机网络OSI七层模型
OSI模型分为七层,各层功能明确:物理层传输比特流,数据链路层负责帧传输,网络层处理数据包路由,传输层确保端到端可靠传输,会话层管理会话,表示层负责数据格式转换与加密,应用层提供网络服务。数据在传输中经过封装与解封装过程。OSI模型优点包括标准化、模块化和互操作性,但也存在复杂性高、效率较低及实用性不足的问题,在实际中TCP/IP模型更常用。
1869 10
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
543 60
基于Reactor模型的高性能网络库之Channel组件篇
Channel 是事件通道,它绑定某个文件描述符 fd,注册感兴趣的事件(如读/写),并在事件发生时分发给对应的回调函数。
575 60

热门文章

最新文章