avant-propos
Ceci est une utilisation simple du TensorBoard.
brève introduction
Tensorboard est une application Web suite pour l'opération de vérification de programme tensorflow. Vous pouvez comprendre intuitivement la formation.
utilisation
Utilisez op sommaire. Les exemples passent un article, le coût de l'enregistrement du changement tensorboard.
Inscrivez-vous résumé
Op observer ajouté à l'op sommaire scalaire
# 创建summary来观察损失值
tf.summary.scalar("loss", cost)
op sommaire de fusion
Si le résumé besoin op excessive de fusionner.
merged_summary_op = tf.summary.merge_all()
Indique le chemin du fichier journal pour enregistrer
En fait, le principe est généré tensorboard fichier journal après avoir exécuté plus, cette chose est de faire la visualisation des données de journal affiché.
Donc , puisqu'il est un chemin de fichier, nous voulons indiquer le chemin pour enregistrer le fichier.
logs_path="./example"
exécution session
Tout d'abord, trouver un op sauvé, en utilisant summary.FileWriter enregistrer la carte par défaut.
#op 把需要的记录数据写入文件
summary_writer=tf.summary.FileWriter(logs_path,graph=tf.get_default_graph())
exécution merged_summary_op
summary=sess.run(merged_summary_op,feed_dict={X: train_X, Y: train_Y})
summary_writer.add_summary(summary, epoch * n_samples)
Code détaillé
# -*- coding: utf-8 -*-
# @Time : 2017/12/5 上午9:28
# @Author : SkullFang
# @Email : [email protected]
# @File : demo2.py
# @Software: PyCharm
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import random
#训练参数
learning_rate=0.01
traing_epochs=1000
display_step=50
logs_path="./example"
# 训练数据
train_X = np.asarray([3.3, 4.4, 5.5, 6.71, 6.93, 4.168, 9.779, 6.182, 7.59, 2.167,
7.042, 10.791, 5.313, 7.997, 5.654, 9.27, 3.1])
train_Y = np.asarray([1.7, 2.76, 2.09, 3.19, 1.694, 1.573, 3.366, 2.596, 2.53, 1.221,
2.827, 3.465, 1.65, 2.904, 2.42, 2.94, 1.3])
n_samples = train_X.shape[0]
#定义两个变量的op占位符
X=tf.placeholder("float")
Y=tf.placeholder("float")
#初始化w,b
W=tf.Variable(random.random(),name="weight")
b=tf.Variable(random.random(),name="bias")
#构造线性模型
pred=tf.add(tf.multiply(X,W),b)
#均方误差
#reduce_sum是对每一项进行加和
#reduce_sum(x,0)是每一列进行加和,reduce_sum(x,1)是对每一行进行加和
cost=tf.reduce_sum(tf.pow(pred-Y,2))/(2*n_samples)
#梯度下降
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
#初始化所有的变量
init=tf.global_variables_initializer()
# 创建summary来观察损失值
tf.summary.scalar("loss", cost)
merged_summary_op = tf.summary.merge_all()
#以上都是构造op,只是为了告诉tensorflow 模型的数据流动方向
#使用session 启动默认图
with tf.Session() as sess:
sess.run(init) #初始化
#op 把需要的记录数据写入文件
summary_writer=tf.summary.FileWriter(logs_path,graph=tf.get_default_graph())
for epoch in range(traing_epochs):
for (x,y) in zip(train_X,train_Y):
sess.run(optimizer,feed_dict={X:train_X,Y:train_Y})
if(epoch+1) % display_step==0:
# c, summary = sess.run([cost, merged_summary_op], feed_dict={X: train_X, Y: train_Y})
c= sess.run(cost, feed_dict={X: train_X, Y: train_Y})
summary=sess.run(merged_summary_op,feed_dict={X: train_X, Y: train_Y})
summary_writer.add_summary(summary, epoch * n_samples)
# c=sess.run(cost,feed_dict={X:train_X,Y:train_Y})
print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(c), \
"W=", sess.run(W), "b=", sess.run(b))
print ("optimization Finished")
training_cost = sess.run(cost,feed_dict={X:train_X,Y:train_Y})
print ("Training cost=",training_cost,"W=",sess.run(W),"b=",sess.run(b),"\n")
#画图
plt.plot(train_X,train_Y,'ro',label="Original data")
plt.plot(train_X,sess.run(W)*train_X+sess.run(b),label="Fitted line")
plt.legend()
plt.show()
plt.savefig('linear_train.png')
# 测试数据
test_X = np.asarray([6.83, 4.668, 8.9, 7.91, 5.7, 8.7, 3.1, 2.1])
test_Y = np.asarray([1.84, 2.273, 3.2, 2.831, 2.92, 3.24, 1.35, 1.03])
print("Testing... (Mean square loss Comparison)")
testing_cost = sess.run(
tf.reduce_sum(tf.pow(pred - Y, 2)) / (2 * test_X.shape[0]),
feed_dict={X: test_X, Y: test_Y}) # same function as cost above
print("Testing cost=", testing_cost)
print("Absolute mean square loss difference:", abs(
training_cost - testing_cost))
plt.plot(test_X, test_Y, 'bo', label='Testing data')
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
plt.legend()
plt.show()
plt.savefig('linear_test.png')
effet
1
Après l'exécution de plus sera plus d'un échantillon du fichier dans le dossier de répertoire du programme, qui est notre fichier journal
image.png
2
Ouvrez le terminal
dans l'exécution du projet de répertoire suivant, rappelez - vous qu'il doit être effectué dans le répertoire du projet. Voici le journal du dossier spécifié et les ports.
tensorboard --logdir=./example --host 0.0.0.0
image.png
Ceci est l'effet de la mise en œuvre de la fin.
Ouvrir dans le navigateur
http://0.0.0.0:6006
Ceci est le résultat final. Nous pouvons voir la baisse de la perte, ce qui indique bien pour nous d'apprendre. L'axe horizontal est le nombre de tours
Reproduit: https://www.jianshu.com/p/1bdda872295c