1. 程式人生 > >Tensorflow 04__:tensorboard的官網教程

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

TensorflowCIFAR-10資料分類教程程式碼詳解

標題 概述 對CIFAR-10 資料集的分類是機器學習中一個公開的基準測試問題,本教程程式碼通過解決CIFAR-10資料分類任務,介紹了Tensorflow的一些高階用法,演示了構建大型複雜模型的一些重要技巧,著重於建立一個規範的網路組織結構,訓練並進行評估,為建立更大規模更加複雜的

Vector Representations of Words -- TensorFlowword2vec教程翻譯

本文為Tensorflow Tutorials 詞向量教程的翻譯版本,翻譯過程即學習過程,同時也會在日後根據當前階段的理解,重新翻閱更新。 在此教程中,我們借用Mikolov等人論文中提到的word2vec模型,此模型可將單詞對映成特定的向量,這

學習TensorFlowTensorBoard可視化絡結構和參數

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吧! 通過本文,