国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

tensorboard簡介(含代碼)

JayChen / 634人閱讀

摘要:代表圖中的一個節(jié)點(diǎn),用于計算張量數(shù)據(jù)可以由節(jié)點(diǎn)構(gòu)造器與產(chǎn)生。例如表示創(chuàng)建了一個類型為的,該接收和作為輸入,而產(chǎn)生作為輸出。是否能在該作用域內(nèi)創(chuàng)建新對象由決定。

一.tensorboard簡介

tensorboard是tensorflow自帶的一個強(qiáng)大的可視化工具,也是一個web應(yīng)用套件支持七種可視化包括 SCALARS(標(biāo)量)、IMAGES(圖像)、AUDIO(音頻)、GRAPHS(數(shù)據(jù)流圖)、DISTRIBUTIONS(訓(xùn)練數(shù)據(jù)分布圖)、HISOGRAMS(訓(xùn)練過程中數(shù)據(jù)的柱狀圖)和EMBEDDINGS(展示詞向量的投影分布)

一.基礎(chǔ)知識

Tensorflow的計算表現(xiàn)為數(shù)據(jù)流圖,因此tf.Graph類中包含了一系列表示計算的操作對象(tf.Operation),以及操作之間的流動的數(shù)據(jù)(tf.Tensor)。tf.Operation代表圖中的一個節(jié)點(diǎn),用于計算張量數(shù)據(jù)可以由節(jié)點(diǎn)構(gòu)造器(tf.add)與tf.Graph.creat_op()產(chǎn)生。tf.Tensor是操作輸出的符號句柄,不包含輸出的的值,而是提供tf.Session來計算這些值的方法,這樣就能構(gòu)建一個數(shù)據(jù)流連接。例如c = tf.matmul(a, b)表示創(chuàng)建了一個類型為MatMul的Operation,該Operation接收Tensor a和Tensor b作為輸入,而產(chǎn)生Tensor c作為輸出。
在可視化的時候還需要給必要的節(jié)點(diǎn)添加摘要(summary),摘要會收集節(jié)點(diǎn)的數(shù)據(jù),并且標(biāo)記上第幾步時間戳等寫入事件文件(event file),tf.sunmmary.FileWriter類用于在目錄中創(chuàng)建事件文件,并且向摘要中添加摘要和事件。如train_writer.add_summary(summary,i)。

二.mnist小程序分析

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
class tensorboard(object):

#用來生成核函數(shù)
def weight_variable(self,shape):
    weight=tf.truncated_normal(shape=shape,stddev=0.1)
    return tf.Variable(weight)
#用來生成偏置項的分布
def bias_variable(self,shape):
    bias=tf.constant(0.0,dtype=tf.float32,shape=shape)
    return tf.Variable(bias)
    

初始化某個結(jié)構(gòu)層,其中我們使用tf.name_scope來創(chuàng)建作用域,它和tf.variable_scope的區(qū)別在于tf.name_scope只能給op_name加前綴,tf.variable_scope不僅僅可以給op_name還能給variable_name加前綴同時簡要說明tf.Variable和tf.get_Variable的區(qū)別,簡而言之就是tf.Variable每次都直接新建一個變量,但是tf.get_Variable先檢查,如果有的話就直接返回該變量對象,否則創(chuàng)建對象。是否能在該作用域內(nèi)創(chuàng)建新對象由tf.get_Variable決定。
再使用variable_summaries函數(shù)來創(chuàng)建該層的一些信息


def nn_layer(self,input_tensor,input_dim,output_dim,layer_name,act=tf.nn.relu):
    with tf.name_scope(layer_name):
        with tf.name_scope("weight"):
            weights=self.weight_variable([input_dim,output_dim])
            self.variable_summaries(weights)
        with tf.name_scope("bias"):
            bias=self.weight_variable([output_dim])
            self.variable_summaries(bias)
        with tf.name_scope("Wx_plus_b"):
            preactivate=tf.nn.bias_add(tf.matmul(input_tensor,weights),bias)
            #tf.summary是給必要的節(jié)點(diǎn)添加摘要,摘要會收集該節(jié)點(diǎn)的數(shù)據(jù),在這個位置收集數(shù)據(jù)并              #且使用histogram繪制出來,效果如下圖
            tf.summary.histogram("preactivate",preactivate)
        activations=act(preactivate,name="activation")
        tf.summary.histogram("activation",activations)
        return activations

接下來說明我們摘要應(yīng)該包含的數(shù)據(jù),即標(biāo)量由均值、方差、最小值、最大值,同時繪制輸入的張量數(shù)據(jù)的圖分布

def variable_summaries(self,var):
    with tf.name_scope("sunmmaries"):
        mean=tf.reduce_mean(var)
        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))
        tf.summary.histogram("histogram",var)
        

效果如下圖,雖說訓(xùn)練存在問題,但是目標(biāo)僅僅是為了畫圖

接下來是初始化函數(shù),不做多講

def __init__(self,max_steps=500,learning_rate=0.01,drop_out=0.9,batch_size=256):
    self.max_steps=max_steps
    self.learning_rate=learning_rate
    self.drop_out=drop_out
    self.log_dir="mnist_with_summaries"
    self.batch_size=batch_size
    self.mnist=input_data.read_data_sets("MNIST_data/",one_hot=True,source_url="http://yann.lecun.com/exdb/mnist/")
    


以下定義了結(jié)構(gòu)信息,定義了圖中的節(jié)點(diǎn)

def construct(self):
    with tf.name_scope("input"):
        self.x=tf.placeholder(dtype=tf.float32,shape=[self.batch_size,784],name="X_input")
        self.y_=tf.placeholder(dtype=tf.float32,shape=[self.batch_size,10],name="y_input")
    with tf.name_scope("input_shape"):
        image_shaped_input=tf.reshape(self.x,shape=[self.batch_size,28,28,1])
        tf.summary.image("input",image_shaped_input,10)
    hidden1=self.nn_layer(self.x,784,500,"layer1")
    with tf.name_scope("drop_out"):
        self.keep_prob=tf.placeholder(dtype=tf.float32)
        tf.summary.scalar("dropout_keep_prob",self.keep_prob)
        dropped=tf.nn.dropout(hidden1,keep_prob=self.keep_prob)
    y=self.nn_layer(dropped,500,10,"layer2",act=tf.identity)
    with tf.name_scope("cross_entropy"):
        diff=tf.nn.softmax_cross_entropy_with_logits(logits=y,labels=self.y_)
        with tf.name_scope("total"):
            cross_entropy=tf.reduce_mean(diff)
    tf.summary.scalar("cross_entropy",cross_entropy)
    with tf.name_scope("train"):
        self.train_step=tf.train.AdamOptimizer(self.learning_rate).minimize(cross_entropy)
    with tf.name_scope("accuracy"):
        with tf.name_scope("correct_prediction"):
            correct_prediction=tf.equal(tf.argmax(y),tf.argmax(self.y_))
        with tf.name_scope("accuracy"):
            self.accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
    tf.summary.scalar("accuracy",self.accuracy)
    


上面的代碼定義了大部分的節(jié)點(diǎn)名稱,并且也添加了標(biāo)量的摘要如accuracy等,accuracy的圖不再贅述,接下來就是在運(yùn)行的過程中繪制剛剛的標(biāo)量和圖表信息


    #為了釋放TensorBoard所使用的事件文件(events file),所有的即時數(shù)據(jù)(在這里只有一個)都要在圖表構(gòu)建階段合并至一個操作(op)中。
    merged=tf.summary.merge_all()
    session=tf.Session()
    #用于將Summary寫入磁盤,需要制定存儲路徑logdir,如果傳遞了Graph對象,則在Graph Visualization會顯示Tensor Shape Information
    train_writer=tf.summary.FileWriter(self.log_dir+"/train",session.graph)
    test_writer=tf.summary.FileWriter(self.log_dir+"/test")
    init=tf.global_variables_initializer()
    session.run(init)
    saver=tf.train.Saver()
    for i in range(self.max_steps):
        if i%100==0:
            #繪制之前的所有的圖表以及標(biāo)量信息
            summary,acc=session.run([merged,self.accuracy],feed_dict=self.feed_dict(False))
            test_writer.add_summary(summary,i)
            print("Accuracy at step %s: %s"%(i,acc))
        else:
            if i==499:
                #定義本模型的運(yùn)行選項,并不加限制并且操作元數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。
                run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
                run_metadata=tf.RunMetadata()
                summary,_=session.run([merged,self.train_step],feed_dict=self.feed_dict(True),options=run_options,run_metadata=run_metadata)
                train_writer.add_run_metadata(run_metadata,"step%03d"%i)
                train_writer.add_summary(summary,i)
                print("Adding run metadata for",i)
            else:
                summary,_=session.run([merged,self.train_step],feed_dict=self.feed_dict(True))
                train_writer.add_summary(summary,i)
                if i%99==0:
                    print("at train step")
    train_writer.close()
    test_writer.close()
def extract(self,x,y):
    sample_num=self.mnist.train.num_examples
    idx=np.random.randint(low=0,high=(sample_num-self.batch_size))
    return x[idx:(idx+self.batch_size)],y[idx:(idx+self.batch_size)]
def feed_dict(self,train):
    if train:
        xs,ys=self.mnist.train.next_batch(self.batch_size)
        k=self.drop_out
    else:
        xs,ys=self.extract(self.mnist.train.images,self.mnist.train.labels)
        k=1.0
    return {self.x:xs,self.y_:ys,self.keep_prob:k}
    

二.結(jié)論

Tensorboard作為對TensorFlow訓(xùn)練過程的分析,可以對模型的問題作出更快的判斷,可以加快模型的優(yōu)化,應(yīng)當(dāng)盡量多采用

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44507.html

相關(guān)文章

  • 第2話 TensorFlow 數(shù)據(jù)流圖———TensorBoard的使用

    摘要:什么是數(shù)據(jù)流圖使用符號計算圖,這與相似,不過與相比,更簡潔。這兩種元素在數(shù)據(jù)流圖中有自己各自的作用,其中節(jié)點(diǎn)代表對數(shù)據(jù)所做的運(yùn)算或某種算子。 1.1 什么是數(shù)據(jù)流圖 TensorFlow使用符號計算圖,這與Theano相似,不過與Theano相比,TensorFlow 更簡潔。TensorFlow 的名字本身描述了它自身的執(zhí)行原理: Tensor (張量)意味著N維數(shù)組,F(xiàn)low (流...

    li21 評論0 收藏0
  • Tensorflow代碼解析(二)

    摘要:為了進(jìn)一步了解的邏輯,圖對和進(jìn)行了展開分析。另外,在命名空間中還隱式聲明了控制依賴操作,這在章節(jié)控制流中相關(guān)說明。簡述是高效易用的開源庫,有效支持線性代數(shù),矩陣和矢量運(yùn)算,數(shù)值分析及其相關(guān)的算法。返回其中一塊給用戶,并將該內(nèi)存塊標(biāo)識為占用。 3. TF 代碼分析初步3.1 TF總體概述為了對TF有整體描述,本章節(jié)將選取TF白皮書[1]中的示例展開說明,如圖 3 1所示是一個簡單線性模型的TF...

    zhigoo 評論0 收藏0
  • 在阿里云Kubernetes容器服務(wù)上打造TensorFlow實(shí)驗室

    摘要:準(zhǔn)備環(huán)境阿里云容器服務(wù)目前已經(jīng)上線,但是購買按量付費(fèi)的計算型服務(wù)器需要申請工單開通。總結(jié)我們可以利用阿里云容器服務(wù),輕松的搭建在云端搭建的環(huán)境,運(yùn)行深度學(xué)習(xí)的實(shí)驗室,并且利用追蹤訓(xùn)練效果。 摘要: 利用Jupyter開發(fā)TensorFLow也是許多數(shù)據(jù)科學(xué)家的首選,但是如何能夠快速從零搭建一套這樣的環(huán)境,并且配置GPU的使用,同時支持最新的TensorFLow版本, 對于數(shù)據(jù)科學(xué)家來說...

    raise_yang 評論0 收藏0
  • 概覽 AI訓(xùn)練服務(wù) UAI Train

    摘要:概覽概覽產(chǎn)品簡介什么是訓(xùn)練服務(wù)交互式訓(xùn)練分布式訓(xùn)練分布式訓(xùn)練簡介分布式訓(xùn)練分布式訓(xùn)練產(chǎn)品優(yōu)勢產(chǎn)品更新記錄產(chǎn)品定價快速上手開始使用快速上手案例介紹環(huán)境準(zhǔn)備創(chuàng)建鏡像倉庫 概覽產(chǎn)品簡介什么是AI訓(xùn)練服務(wù)交互式訓(xùn)練分布式訓(xùn)練分布式訓(xùn)練簡介TensorFlow分布式訓(xùn)練MXNet分布式訓(xùn)練產(chǎn)品優(yōu)勢產(chǎn)品更新記錄產(chǎn)品定價快速上手開始使用UAI-Train快速上手-MNIST案例MNIST 介紹環(huán)境準(zhǔn)備創(chuàng)建...

    ernest.wang 評論0 收藏2903
  • tensorflow可視化網(wǎng)絡(luò)

    當(dāng)我們構(gòu)建一個深度學(xué)習(xí)模型時,了解模型的結(jié)構(gòu)和參數(shù)是非常重要的。TensorFlow提供了一種可視化網(wǎng)絡(luò)的編程技術(shù),它可以幫助我們更好地理解模型的結(jié)構(gòu)和參數(shù),從而更好地調(diào)整模型以獲得更好的性能。 TensorFlow提供了一個名為TensorBoard的工具,它可以可視化我們的模型。TensorBoard可以顯示訓(xùn)練和驗證的損失曲線、模型的結(jié)構(gòu)、參數(shù)分布等信息。在本文中,我們將介紹如何使用Ten...

    LoftySoul 評論0 收藏1890

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<