Tensorflow學習筆記 第二節程式結構

2021-10-03 18:36:50 字數 3752 閱讀 2987

1. 構建任何擬建立神經網路的藍圖

2. 計算圖的定義及其執行

計算圖是包含節點和邊的網路。本節定義所有要使用的資料,也就是張量(tensor)物件(常量、變數和佔位符),同時定義要執行的所有計算,都是運算操作物件(operation object,簡稱 op)

計算圖中的節點就是操作

一次加法是乙個操作

一次乘法也是乙個操作

構建一些變數的初始值也是乙個操作

網路中的節點表示物件(張量和運算操作),表示運算操作之間流動的張量

tensorflow有兩種邊:使用會話物件來實現計算圖的執行。會話物件封裝了評估張量和操作物件的環境。這裡真正實現了運算操作並將資訊從網路的一層傳遞到另外一層。不同張量物件的值僅在會話物件中被初始化、訪問和儲存。在此之前張量物件只被抽象定義,在會話中才被賦予實際的意義。

# -*- coding:utf-8 -*-

import tensorflow as tf

defmain()

:pass

if __name__==

'__main__'

: main(

)

# -*- coding:utf-8 -*-

import tensorflow as tf

defadd_test()

: a=tf.constant([1

,2,3

,4],name=

'a')

b=tf.constant([1

,2,3

,4],name=

'b')

sum=tf.add(a,b,name=

'sum'

)with tf.session(

)as sess,tf.summary.filewriter(

'./log'

,sess.graph)

as writer:

#列印計算結果

print

(sess.run(sum)

)#顯示計算圖:tensorboard --logdir=log --host=127.0.0.1

在例項中,計算圖由三個節點組成, a 和 b表示這兩個向量,add 是要對它們執行的操作。

為了使這個圖生效,首先需要使用 tf.session() 定義乙個會話物件 sess,然後使用session 類中定義的 run 方法執行它

run(fetches,feed_dict=

none

,options=

none

,run_metadata)

#運算結果的值在 fetches 中提取

在示例中,提取的張量為 sum。

run ()方法將導致在每次執行該計算圖的時候,都將對與 sum相關的張量和操作進行賦值。如果抽取的不是 sum而是 a,那麼最後給出的是向量 a的執行結果為:[1,2,3,4];

此外一次也可以提取乙個或多個張量或操作物件[a,b,sum];在同一段**中也可以有多個會話物件。

with expression [

as target]

:with

-body

expression是任意表示式,獲取上下文管理器,as target可選,with-body是with語句的語句體

with通過__enter__方法初始化,然後在__exit__中做善後以及處理異常。所以使用with處理的物件必須有__enter__()和__exit__()這兩個方法。其中__ enter__()方法在語句體(with語句包裹起來的**塊)執行之前進入執行,__ exit __()方法在語句體執行完畢退出後執行。

expression 要返回乙個上下文管理器物件,該物件並不賦值給 as 子句中的 target ,如果指定了 as 子句的話,會將上下文管理器的 __enter__方法的返回值賦值給 target。target 可以是單個變數,或者由「()」括起來的元組。不管執行體語句中是否有異常,with語句都能保證執行完畢後關閉開啟的控制代碼。

with tf.session(

)as sess,tf.summary.filewriter(

'./log'

,sess.graph)

as writer:

expression可以有多個,相同效果可以用巢狀with語句來實現

with tf.session(

)as sess:

#列印計算結果

print

(sess.run(sum)

)#顯示計算圖:tensorboard --logdir=log --host=127.0.0.1

with tf.summary.filewriter(

'./log'

,sess.graph)

as writer:

writer.flush(

)

tf.interactivesession():是一種交替式的會話方式,它讓自己成為了預設的會話,也就是說使用者在單一會話的情境下,不需要指明用哪個會話也不需要更改會話執行的情況下,就可以執行起來,結果就是執行run和eval()函式可以不指明sessiontf.session():執行run和eval()函式需要指明session。tf.interactivesession():它能讓你在執行圖的時候,插入一些計算圖,這些計算圖是由某些操作(operations)構成的。這對於工作在互動式環境中的人們來說非常便利,比如使用ipython。

tf.session():需要在啟動session之前構建整個計算圖,然後啟動該計算圖

sess=tf.interactivesession(

)print

(sum.

eval()

)

與下面等價

sess=tf.session(

)with sess as default:

print

(sum.

eval()

)

tensorflow學習筆記

tensorflow安裝可以直接通過命令列或者原始碼安裝,在此介紹tensorflow8命令列安裝如下 安裝tensorflow sudo pip install upgrade 另外,解除安裝tensorflow命令為 sudo pip uninstall tensorflow tensorflo...

Tensorflow學習筆記

1.如何在虛擬機器中安裝tensor flow 1 首先安裝pip pip install 2 pip install 2.學習tensorflow需要學習 python and linux 3.使用 tensorflow,你必須明白 tensorflow 1 使用圖 graph 來表示計算任務.2...

TensorFlow學習筆記

1 擬合直線 import the library import tensorflow as tf import numpy as np prepare train data train x np.linspace 1,1,100 temp1 train x,temp2 train x.shape,...