貸款超市網(wǎng)站開發(fā)sem優(yōu)化服務(wù)公司
TensorBoard常用函數(shù)和類http://t.csdn.cn/Hqi9c
TensorBoard可視化的過程:
①確定一個(gè)整體的圖表,明確從這個(gè)圖表中獲取哪些數(shù)據(jù)的信息
②確定在程序的哪些節(jié)點(diǎn)、以什么樣的方式進(jìn)行匯總數(shù)據(jù)的運(yùn)算,以記錄信息,比如在反向傳播定義以后,使用tf.summary.scalar記錄損失值的變換
③運(yùn)行所有的summary節(jié)點(diǎn)。由于一個(gè)程序中經(jīng)常會(huì)有多個(gè)summary節(jié)點(diǎn),為了減少一個(gè)一個(gè)手動(dòng)啟動(dòng)的繁瑣,可以使用tf.summary.merge_all將所有summary節(jié)點(diǎn)合并成一個(gè)節(jié)點(diǎn),在啟動(dòng)運(yùn)行
④使用tf.summary.FileWriter將運(yùn)行后輸出的數(shù)據(jù)保存到本地磁盤中
⑤運(yùn)行整個(gè)程序,完成執(zhí)行后,win+R打開終端,輸入tensorboard --logdir 文件上一級路徑
以下是具體操作:
? ? ? ? 示例代碼如下:
# -*- 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 ostf.compat.v1.disable_eager_execution()#這個(gè)函數(shù)用于禁用 TensorFlow 2 中的即時(shí)執(zhí)行模式,以便能夠使用 TensorFlow 1.x 的計(jì)算圖執(zhí)行方式。#1.準(zhǔn)備數(shù)據(jù)
train_X = np.linspace(-1, 1,100)#train_X 是一個(gè)從 -1 到 1 的等間距數(shù)組,用作輸入特征。
train_Y = 5 * train_X + np.random.randn(*train_X.shape) * 0.7#train_Y 是根據(jù) train_X 生成的目標(biāo)值,在真實(shí)值的基礎(chǔ)上加上了一些噪聲。#2.搭建模型
#通過占位符定義
X = tf.placeholder("float")#X 和 Y 是 TensorFlow 的占位符(Placeholder),用于在執(zhí)行時(shí)提供輸入和標(biāo)簽數(shù)據(jù)。
Y = tf.placeholder("float")
#定義學(xué)習(xí)參數(shù)的變量
W = tf.Variable(tf.compat.v1.random_normal([1]),name="weight")#W 和 b 是學(xué)習(xí)參數(shù)的變量,可以被模型訓(xùn)練調(diào)整。
b = tf.Variable(tf.zeros([1]),name="bias")
#定義運(yùn)算
z = tf.multiply(X,W) + b#z 是通過將輸入特征 X 與權(quán)重 W 相乘并加上偏差 b 得到的預(yù)測值。
#定義損失函數(shù)
cost = tf.reduce_mean(tf.square(Y - z))#cost 是損失函數(shù),計(jì)算預(yù)測值與真實(shí)值之間的平方差的平均值。
#定義學(xué)習(xí)率
learning_rate = 0.01#learning_rate 是學(xué)習(xí)率,用來控制優(yōu)化算法在每次迭代中更新參數(shù)的步長。
#設(shè)置優(yōu)化函數(shù)
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)#optimizer 是梯度下降優(yōu)化器,用于最小化損失函數(shù)。#3.迭代訓(xùn)練
#初始化所有變量
init = tf.global_variables_initializer()
#定義迭代參數(shù)
training_epochs = 20#training_epochs 是迭代訓(xùn)練的輪數(shù)。
display_step = 2#display_step 是控制訓(xùn)練過程中打印輸出的步長。#定義保存路徑
savedir = "log4/"#啟動(dòng)Session
with tf.Session() as sess:#with tf.Session() as sess: 創(chuàng)建一個(gè)會(huì)話,在該會(huì)話中執(zhí)行計(jì)算圖操作。sess.run(init)#sess.run(init) 運(yùn)行初始化操作,初始化所有變量。tf.summary.scalar("loss", cost)#合并所有的summarymerged_summary_op = tf.summary.merge_all()#創(chuàng)建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}) 執(zhí)行一次優(yōu)化器操作,將當(dāng)前的輸入特征 x 和標(biāo)簽值 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 輪迭代打印一次損失值和當(dāng)前的參數(shù)值。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 庫繪制訓(xùn)練數(shù)據(jù)點(diǎn)和擬合直線。plt.plot(train_X,train_Y,'ro',label='Original data')#繪制原始數(shù)據(jù)點(diǎn)。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}))#使用訓(xùn)練好的模型,傳入輸入特征 0.2 來計(jì)算預(yù)測值 z。
? ? ? ? 運(yùn)行后會(huì)生成文件如下
? ? ? ? win+R打開終端,輸入tensorboard --logdir C:\Users\ASUS\.spyder-py3\log4\summary_log
? ? ? ? 復(fù)制其中的http://localhost:6006/,打開瀏覽器跳轉(zhuǎn)來到tensorboard可視化界面,如下:
Tensorboard顯示圖片示例http://t.csdn.cn/Ok1w5