Tensorflow 04__:tensorboard的官網教程
前言
這篇博文主要是依照官網,介紹各種型別的summary的使用,包括標量scalar型別的,影象型別的image,直方圖累心的histogram.
程式碼
該程式碼主要是使用普通的神經網路對MNIST手寫體數字進行分類識別.網路各層的神經元個數為:784-500-10.784代表輸入神經元個數為784,隱層神經元個數為500,輸出層為10,代表10個類別.
# coding=utf-8
""" tensorboard 的使用"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse
import sys
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
FLAGS = None
def train():
# 讀取MNIST資料
mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True, fake_data=FLAGS.fake_data)
sess = tf.InteractiveSession()
# 給下面的 tensor 加上詞頭; 【注:】with 不能改變其下變數的作用域
with tf.name_scope('input'):
x = tf.placeholder(tf.float32, [None, 784], name='x-input')
y_ = tf.placeholder(tf.float32, [None, 10], name='y-input')
with tf.name_scope('input_shape'):
image_shaped_input = tf.reshape(x, shape=[-1, 28, 28, 1])
# image型別的summary
tf.summary.image('input' , image_shaped_input, 10)
# 網路引數初始化
def weight_variable(shape):
initial = tf.truncated_normal(shape=shape, stddev=0.1)
return tf.Variable(initial)
def bias_varibale(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)
# 要寫到summary的資訊
def variable_summaries(var):
with tf.name_scope('summaries'):
mean = tf.reduce_mean(var)
# 標量型summary
tf.summary.scalar('mean', mean)
with tf.name_scope('stddev'):
stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
tf.summary.scalar('stddev', stddev)
tf.summary.scalar('max', tf.reduce_max(var))
tf.summary.scalar('min', tf.reduce_min(var))
# 直方圖型summary,可以用來檢視tensor的值的分佈
tf.summary.histogram('histogram', var)
def nn_layer(input_tensor, input_dim, output_dim, layer_name, act=tf.nn.relu):
with tf.name_scope(layer_name):
with tf.name_scope('weights'):
weights = weight_variable([input_dim, output_dim])
variable_summaries(weights)
with tf.name_scope('biases'):
biases = bias_varibale([output_dim])
variable_summaries(biases)
with tf.name_scope('Wx_plus_b'):
preactivate = tf.matmul(input_tensor, weights) + biases
tf.summary.histogram('pre_activations', preactivate)
activations = act(preactivate, name='activation')
tf.summary.histogram('activations', activations)
return activations
hidden1 = nn_layer(x, 784, 500, 'layer1')
with tf.name_scope('dropout'):
keep_prob = tf.placeholder(tf.float32)
tf.summary.scalar('dropout_keep_probability', keep_prob)
dropped = tf.nn.dropout(hidden1, keep_prob)
y = nn_layer(dropped, 500, 10, 'layer2', act=tf.identity)
with tf.name_scope('cross_entropy'):
diff = tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
with tf.name_scope('total'):
cross_entropy = tf.reduce_mean(diff)
tf.summary.scalar('cross_entropy', cross_entropy)
with tf.name_scope('train'):
train_step = tf.train.AdamOptimizer(FLAGS.learning_rate).minimize(
cross_entropy)
with tf.name_scope('accuracy'):
with tf.name_scope('correct_prediction'):
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
with tf.name_scope('accuracy'):
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
tf.summary.scalar('accuracy', accuracy)
# 合併所有型別的 summary
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter(FLAGS.log_dir + '/train', sess.graph)
test_writer = tf.summary.FileWriter(FLAGS.log_dir + '/test')
tf.global_variables_initializer().run()
# 獲取sess.run中需要的feed_dict
def feed_dict(train):
if train or FLAGS.fake_data:
xs, ys = mnist.train.next_batch(100, fake_data=FLAGS.fake_data)
k = FLAGS.dropout
else:
xs, ys = mnist.test.images, mnist.test.labels
k = 1.0
return {x: xs, y_: ys, keep_prob: k}
# 網路的訓練和summary的寫入
for i in range(FLAGS.max_steps):
if i % 10 == 0:
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
test_writer.add_summary(summary, i)
print('Accuracy at step %s: %s' % (i, acc))
else:
if i % 100 == 99:
# run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
# run_metadata = tf.RunMetadata()
summary, _ = sess.run([merged, train_step],
feed_dict=feed_dict(True))
# train_writer.add_run_metadata(run_metadata, 'step%03d' % i)
train_writer.add_summary(summary, i)
print('Adding run metadata for', i)
else:
summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True))
train_writer.add_summary(summary, i)
train_writer.close()
test_writer.close()
def main(_):
# tensorflow 中的檔案操作操作類tf.gfile
if tf.gfile.Exists(FLAGS.log_dir):
tf.gfile.DeleteRecursively(FLAGS.log_dir)
tf.gfile.MakeDirs(FLAGS.log_dir)
train()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--fake_data', nargs='?', const=True, type=bool,
default=False,
help='If true, uses fake data for unit testing.')
parser.add_argument('--max_steps', type=int, default=1000,
help='Number of steps to run trainer.')
parser.add_argument('--learning_rate', type=float, default=0.001,
help='Initial learning rate')
parser.add_argument('--dropout', type=float, default=0.9,
help='Keep probability for training dropout.')
parser.add_argument('--data_dir', type=str, default='MNIST_data',
help='Directory for storing input data')
parser.add_argument('--log_dir', type=str, default='MNIST_Log',
help='Summaries log directory')
FLAGS, unparsed = parser.parse_known_args()
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
程式碼中產生各種型別的summary的視覺化結果如下:
標量型別:
圖片型別:
圖模型型別:
分佈型別:
直方圖型別:
注意事項
(1)對於tf.summary.image,其輸入的圖片必須是4-D的,[batch_size, height, width, channels].
參考網址
相關推薦
Tensorflow 04__:tensorboard的官網教程
前言 這篇博文主要是依照官網,介紹各種型別的summary的使用,包括標量scalar型別的,影象型別的image,直方圖累心的histogram. 程式碼 該程式碼主要是使用普通的神經網路對MNIST手寫體數字進行分類識別.網路各層的神經元個數為:7
TensorFlow 1.9官網樹莓派安裝教程
check erl swa limited was new b- failed higher Install TensorFlow on Raspbian This guide explains how to install TensorFlow on a Raspb
《wiki官網教程》 4 視覺化與除錯工具
一、儲存和回放資料 1、錄製資料(通過建立一個bag檔案) 記錄ROS系統執行時的話題資料,記錄的話題資料將會累積儲存到bag檔案中。 1、Terminal 1: $ roscore Terminal 2: $ rosrun turtlesim turtlesim_node
MongoDB 官網教程 下載 安裝
官網:https://www.mongodb.com/ Doc:https://docs.mongodb.com/ Manual:https://docs.mongodb.com/manual/ 安裝教程:https://docs.mongodb.com/manual/installation/#tut
Heroku中的java伺服器部署-官網教程翻譯
Heroku 可以提供免費的web應用伺服器分佈伺服器(並不只限於此),如下記錄瞭如何將自己的應用程式提交到heroku的過程。原英文連結 https://devcenter.heroku.com/articles/git Heroku是一個利用 Git 來管理App 程式
RabbitMQ官網教程1——Hello World
RabbitMQ是一個訊息中介軟體——接收和傳送訊息。你可以把它想象成一個郵局,當你把郵件投遞到郵箱後,你就可以確信郵遞員最終會幫你把郵件寄給收件人。 術語: 生產者——傳送訊息; 佇列:“郵箱”,存在於RabbitMQ內。雖
基於Android搭建tensorflow lite,實現官網的Demo以及執行自定義tensorflow模型(二)
基於上一篇在android studio 中已經佈置好的環境進行開發。這篇文章是基於手寫識別的例子,在tensorflow中搭建一個簡單的BP神經網路,在實現手寫數字的識別,然後把這個網路生成檔案,在android的tensorflow lite中執行。一 在tensorfl
ffmpeg官網教程(1)
http://dranger.com/ffmpeg/tutorial01.html ffmpeg:3.1.2版 #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #in
【Spring】官網教程閱讀筆記(六):訪問Twitter
此時,Twitter會詢問是否允許樣例應用讀取你的推文檢視你的關注人。這裡,螢幕上的顯示有些誤導,因為此時的應用只會讀取你的資訊已經你關注人的資訊。點選Authorize app獲取上述訪問許可權。 一旦獲取了許可權,Twitter重定向瀏覽器到應用。此時連線建立,該連線儲存在連線倉庫中。此時應該可以看見頁
《wiki官網教程》3 編寫簡單的訊息釋出器和訂閱器 (C++)
釋出器節點 初始化 ROS 系統 在 ROS 網路內廣播我們將要在 chatter 話題上釋出 std_msgs/String 型別的訊息 以每秒 10 次的頻率在 chatter 上釋出訊息 #include "ros/ros.h"//ros/ros.h 是
[pytorch] 官網教程裏的plt相關筆記
com 就是 lib interact 技術分享 pytorch rgs 相關 new pytorch筆記2 plt.scatter scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin
Tensorflow官網CIFAR-10資料分類教程程式碼詳解
標題 概述 對CIFAR-10 資料集的分類是機器學習中一個公開的基準測試問題,本教程程式碼通過解決CIFAR-10資料分類任務,介紹了Tensorflow的一些高階用法,演示了構建大型複雜模型的一些重要技巧,著重於建立一個規範的網路組織結構,訓練並進行評估,為建立更大規模更加複雜的
Vector Representations of Words -- TensorFlow官網word2vec教程翻譯
本文為Tensorflow Tutorials 詞向量教程的翻譯版本,翻譯過程即學習過程,同時也會在日後根據當前階段的理解,重新翻閱更新。 在此教程中,我們借用Mikolov等人論文中提到的word2vec模型,此模型可將單詞對映成特定的向量,這
學習TensorFlow,TensorBoard可視化網絡結構和參數
pla code ext world hold 技巧 n) sample 化工 在學習深度網絡框架的過程中,我們發現一個問題,就是如何輸出各層網絡參數,用於更好地理解,調試和優化網絡?針對這個問題,TensorFlow開發了一個特別有用的可視化工具包:TensorBoard
如何在Centos官網下載所需版本的Centos——靠譜的Centos下載教程
minimal 安裝虛擬機 鏡像 href -m cli ref nor external 很多小夥伴不知道對應版本的Centos怎麽下載,最近小編整理了一份Centos詳細的下載教程,希望小夥伴們不在為下不到對應版本的Centos而苦惱。 1、進入Centos官網:htt
Thinkphp官網最新視頻教程
視圖 三十五 session thread 查詢 模型 最新 div coo Thinkphp官網最新視頻教程 點此下載地址 第七講、SQLIT論壇 第三十講、淺析session,cookie機制 第十六講、查詢範圍 第三十二講、cookie的使用 第二講安裝與入門--上
怎麽打開YouTube看視頻,國內如何上YouTube官網的教程!
最大的 怎麽 什麽 image oss 如何 ima ext ces YouTube現在是年輕一代的很流行的一個視頻網頁的(電腦手機都可以看的)。但是很多都知道YouTube國內無法正常打開。需要借助一些工具(君越加速器)後才能打開。我們現在直接打開啊YouTube試試看看
SQL Server入門(四) 官網關於 SQL Server初級入門教程
學習內容 這些教程將幫助你理解 SSMS 中提供的資訊以及如何利用其功能。 熟悉 SSMS 的最好方式是進行實踐演練。 這些教程將使你熟悉 SSMS 中提供的各種功能。 這些教程將講述如何管理 SSMS 元件以及如何查詢常用的功能。 以下是本教程內容: 教
軟體安裝與下載總結(四)--從CentOS官網下載系統映象詳細教程
轉載:https://jingyan.baidu.com/article/1876c85279cedd890a13766c.html 很多新手小白鼠想學習CentOS系統,但是不知道映象去哪裡搞,隨便去個第三方發現要麼要註冊,要麼各種廣告病毒,或者好不容易找到官網,點進去一看卻
GitHub使用教程詳解——官網操作指南(翻譯)
GitHub使用指南 原文地址:GitHub官網 示例專案:Hello World 十分鐘輕鬆教學 在學習計算機語言程式設計的過程中建立Hello World 專案是一個歷史悠久的傳統。當你接觸一門新事物的時候可以用它來做一個簡單的練習。讓我們開始使用github吧! 通過本文,