Tensorboard中常用的函数和类

news2024/12/25 23:47:49

常用函数

①tf.summary.scalar

        用于汇总标量数据,共有四个参数,格式如下:

tf.summary.scalar(tags,values,collections = None,name = None)

        例如:tf.summary.scalar('test',test)

        以标量的形式显示变量test的变化。该函数一般用于表示损失值、准确率的变化情况。

②tf.summary.histogram

        用于显示直方图信息,共有四个参数,格式如下:

tf.summary.histogram(tags,values,collections = None,name = None)

        例如:tf.summary.histogram('histogram',w)

        以直方图的形式记录变量w的变化。该函数一般用于表示训练过程中变量的分布情况。

③tf.summary.image

        用于输出带有图像的序列化数据,共有五个参数,格式如下:

tf.summary.image(tag,tensor,max_images = 3,collections = None,name = None)

        其中第二个参数的类型为tensor,即一个多维数组,第三个参数用于设置输出图像的数量。

④tf.summary.audio

        用于展示训练过程中记录的音频,共有六个参数,格式如下:

tf.summary.audio(name,tensor,sample_rate,max_outputs = 3,collections = None,family = None)

        其中第二个参数的类型为tensor,即一个多维数组,第三个参数用于设置输出音频的数量。

⑤tf.summary.distribution

        用于展示分布图,一般用于显示学习参数如weights、bias的分布。

⑥tf.summary.text

        用于将文本类型的数据转换为tensor写入summary中,代码示例如下:

text = "test_test_test"
summary_op = tf.summary.text('text',tf.convert_to_tensor(text))

⑦tf.summary.merge_all

        该函数可以将所有汇总数据全部保存到磁盘,以便tensorboard显示。如果没有特殊要求,一般用这一句代码就可以把训练时的各种信息都展示出来。格式如下:

tf.summary.merge_all(key = 'summaries')

        需要注意的是,在使用tf.summary.merge_all()之前,你需要确保已经定义了至少一个tf.summary操作,例如tf.summary.scalar()、tf.summary.histogram()等。

⑧tf.summary.merge

        常和tf.get_collection()函数配合使用,可以选择将需要保存的汇总数据保存到磁盘,以便tensorboard显示。格式如下:

tf.summary.merge(inputs,collections = None,name = None)

⑨tf.summary.FileWriter

        用于指定一个文件用来保存图。格式如下:

tf.summary.FileWritter(path,sess.graph)

        使用时,可以调用add_summary()方法将训练过程的数据保存在filewriter指定的文件中。

        代码示例如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Sep 25 20:07:18 2023

@author: ASUS
"""

import tensorflow.compat.v1 as tf
import numpy as np
import matplotlib.pyplot as plt
import os

tf.compat.v1.disable_eager_execution()#这个函数用于禁用 TensorFlow 2 中的即时执行模式,以便能够使用 TensorFlow 1.x 的计算图执行方式。

#1.准备数据
train_X = np.linspace(-1, 1,100)#train_X 是一个从 -1 到 1 的等间距数组,用作输入特征。
train_Y = 5 * train_X + np.random.randn(*train_X.shape) * 0.7#train_Y 是根据 train_X 生成的目标值,在真实值的基础上加上了一些噪声。

#2.搭建模型
#通过占位符定义
X = tf.placeholder("float")#X 和 Y 是 TensorFlow 的占位符(Placeholder),用于在执行时提供输入和标签数据。
Y = tf.placeholder("float")
#定义学习参数的变量
W = tf.Variable(tf.compat.v1.random_normal([1]),name="weight")#W 和 b 是学习参数的变量,可以被模型训练调整。
b = tf.Variable(tf.zeros([1]),name="bias")
#定义运算
z = tf.multiply(X,W) + b#z 是通过将输入特征 X 与权重 W 相乘并加上偏差 b 得到的预测值。
#定义损失函数
cost = tf.reduce_mean(tf.square(Y - z))#cost 是损失函数,计算预测值与真实值之间的平方差的平均值。
#定义学习率
learning_rate = 0.01#learning_rate 是学习率,用来控制优化算法在每次迭代中更新参数的步长。
#设置优化函数
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)#optimizer 是梯度下降优化器,用于最小化损失函数。

#3.迭代训练
#初始化所有变量
init = tf.global_variables_initializer()
#定义迭代参数
training_epochs = 20#training_epochs 是迭代训练的轮数。
display_step = 2#display_step 是控制训练过程中打印输出的步长。

#定义保存路径
savedir = "log4/"

#启动Session
with tf.Session() as sess:#with tf.Session() as sess: 创建一个会话,在该会话中执行计算图操作。
    sess.run(init)#sess.run(init) 运行初始化操作,初始化所有变量。
    
    tf.summary.scalar("loss", cost)
    #合并所有的summary
    merged_summary_op = tf.summary.merge_all()
    #创建summary_write用于写文件
    summary_writer = tf.summary.FileWriter(os.path.join(savedir,'summary_log'),sess.graph)

    
    for epoch in range(training_epochs):
        for(x,y) in zip(train_X,train_Y):
            sess.run(optimizer,feed_dict={X:x,Y:y})#sess.run(optimizer,feed_dict={X:x,Y:y}) 执行一次优化器操作,将当前的输入特征 x 和标签值 y 传入模型。
        summary_str = sess.run(merged_summary_op,feed_dict = {X:x,Y:y})
        summary_writer.add_summary(summary_str,epoch)
        if epoch % display_step == 0:#每隔 display_step 轮迭代打印一次损失值和当前的参数值。
            loss=sess.run(cost,feed_dict={X:train_X,Y:train_Y})
            #测试模型
            print("Epoch:",epoch+1,"cost=",loss,"W=",sess.run(W),"b=",sess.run(b))
    print("Finished!")
    
    #使用 matplotlib 库绘制训练数据点和拟合直线。
    plt.plot(train_X,train_Y,'ro',label='Original data')#绘制原始数据点。
    plt.plot(train_X,sess.run(W)*train_X+sess.run(b),'--',label='Fittedline')#绘制拟合的直线。
    plt.legend()#添加图例。
    plt.show()#显示图形。

#4.利用模型
    print("x=0.2,z=",sess.run(z,feed_dict={X:0.2}))#使用训练好的模型,传入输入特征 0.2 来计算预测值 z。
    

        运行代码后,可以看到生成的文件

常用类

①Class FileWriter

        该类提供了一种在给定目录下创建事件文件并向事件文件中添加汇总数据和事件信息的机制。它采用异步更新文件内容的方式。因此,训练中的程序可以在训练循环中直接调用methods将数据添加到文件,而不用减速训练。

②Class FileWriterCache

        该类用于缓存filewriter,且每个目录拥有一个。

③Class SummaryWriter

        该类用于将生成的序列化数据写入指定的文件。

除此之外,还有Event类、Summary类、SummaryDescription类等

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

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

相关文章

开利网络受邀参与生态合作伙伴和合控股“数利丰”品牌营销会议

近日,开利网络受邀出席生态合作伙伴“数利丰”品牌营销会议,就“数利丰”产品的技术能力和案例沉淀进行分享。 作为“数利丰”项目的技术支持方,开利网络创始人付立军在分享会上表示,现如今,每个企业都至少做过一套系统…

双翼邮件群发软件怎么用?怎么做邮件营销?

如何使用双翼邮件群发软件?营销邮件群发系统哪个好? 近年来,随着电子邮件在商业和个人通信中的普及,双翼邮件群发软件已经成为了一个不可或缺的工具。蜂邮EDM将深入探讨这一强大工具的使用方法,以及如何充分利用其崭新…

✔ ★ 算法基础笔记(Acwing)(六)—— 贪心【java版本】

贪心 一、 区间问题1. 区间选点2. 最大不相交区间数量3. 区间分组(用 堆top 代表区间 头头)POJ3614Sunscreen(优先队列贪心) 4. 区间覆盖 二、哈夫曼树1. 合并果子 三、排序不等式1. 排队打水 四、绝对值不等式货仓选址 五、推公式耍杂技的牛 一、 区间问题 1. 区间选点 原题…

爬虫代理请求转换selenium添加带有账密的socks5代理

爬虫代理请求转换selenium添加带有账密的socks5代理。 一、安装三方库 二、使用方法 1、在cmd命令行输入: 2、给selenium添加代理 最近因为工作需要,需要selenium添加带有账密的socks5代理,贴出一个可用的方法。 把带有账密的socks5代理&am…

Xshell安装使用教程~

简介 Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不…

iOS 视频压缩 mov转mp4 码率

最近还是因为IM模块的功能,IOS录制MOV视频发送后,安卓端无法播放,迫不得已兼容将MOV视频转为MP4发送。 其中mov视频包括4K/24FPS、4K/30FPS、4K/60FPS、720p HD/30FPS、1080p HD/30FPS、1080p HD/60FPS! 使用AVAssetExportSessi…

14. Redisson 分布式锁

Spring Cloud 微服务系列文章,点击上方合集↑ 1. 开头 在单体应用中,我们可以用Java的synchronized或lock来使用锁,但在微服务的场景下,一个应用会部署多个实例,就需要保证多个实例的多个线程同时只能有一个线程来操…

破信息壁垒,亿发一站式ERP系统建设,打造五金制造信息管理平台

五金制造拥有明显的行业特征,如体量小、品种繁多、颜色多样、加工工艺不断演进等,呈现出一种独特的管理挑战。大多数五金企业仍然依赖人工管理和经验决策,如今需要寻求更合理和科学的决策方法,以实现生产、销售、仓储、采购和财务…

无人机如何做到自动巡检?关键技术步骤分析

无人机应用在电网、水利、交通、城管等巡逻巡检领域带来了巡视效率的提升。同时飞手操作的难度和门槛、野外环境的影响、巡检结果处理难度大等带来一系列的巡检问题,自动化的无人机巡检则能很好的解决这些问题,比如我们比较熟知的自动机场,它…

【DETR】

https://tianfeng.space/ 前言 论文 代码 DETR(Data-efficient Image Transformer)是一种用于目标检测任务的深度学习模型。它与传统的目标检测方法不同,采用了Transformer架构,将目标检测问题转化为一个序列到序列的问题。以下…

【广州华锐互动】VR消防队灭火实训:让消防安全教育变得更生动有趣!

VR消防队灭火实训是一种基于虚拟现实技术的消防培训及模拟,学习如何在火灾中保护自己的自救和逃生方法、技能。这种平台可以让市民在虚拟环境中进行火灾逃生训练,提高人的消防意识和自救能力。 传统的消防培训方式通常是通过理论讲解和现场演示来进行&am…

《论文阅读27》SuperGlue: Learning Feature Matching with Graph Neural Networks

一、论文 研究领域: 图像特征点匹配论文:SuperGlue: Learning Feature Matching with Graph Neural NetworksCVPR 2020veido论文code 二、论文简述 [参考] [参考] [参考] 三、论文详述 SuperGlue:使用图神经网络学习特征匹配 本文介绍了…

【AI视野·今日Sound 声学论文速览 第十一期】Mon, 25 Sep 2023

AI视野今日CS.Sound 声学论文速览 Mon, 25 Sep 2023 Totally 1 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Deepfake audio as a data augmentation technique for training automatic speech to text transcription models Authors Alexandre R. …

Hashable/哈希协议, Arrays/数组 的使用

1. Hashable 模型实现哈希协议 1.1 实现 /// Identifiable struct MyCustomModel: Hashable{//let id UUID().uuidStringlet title: Stringfunc hash(into hasher: inout Hasher) {hasher.combine(title)} }/// 哈希协议: 唯一标识值 struct HashableBootcamp: View {// 每个…

山西电力市场日前价格预测【2023-09-27】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-27)山西电力市场全天平均日前电价为342.48元/MWh。其中,最高日前电价为454.24元/MWh,预计出现在18: 30。最低日前电价为171.32元/MWh,预计…

2023 年度编程语言榜单排名揭晓,Python稳坐多项第一

随着科技的迅速发展,编程语言已成为现代社会不可或缺的一部分: 无论是网站开发、移动应用、人工智能还是嵌入式系统,编程语言都扮演着关键角色。 当下流行的AI人工智能大多是通过Python语言实现的。 作为AI技术框架的基础语言,…

华为OD机试 - 工号不够用了怎么办 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…

项目经理如何顺利推进项目:做好任务规划,合理安排时间

在一个项目中,项目经理经常需面对超负荷的工作,并需要通过加班来达成每日的工作任务,他们时常需处理各种任务和大量的电子邮件。这导致项目经理在项目实施过程中,经常处于“救火”状态,而无法有效管理项目进程&#xf…

性能测试分类

一. 基准测试 二. 负载测试 通过逐步增加系统负载,测试系统性能的变化,在满足性能指标的前提下,系统所能承受的最大负载量的测试。 健身:举哑铃 10斤哑铃,举起10个需要15s 20斤哑铃,举起10个需要15s 30斤…