2018年1月24日 星期三

tensorflow-常用基礎語法

常用語法筆記

(以下指令皆需先宣告 import tensorflow as tf)

一般結構:
(1)建立計算圖

(2)執行計算圖

建立計算圖
宣告:
tf.constant() 建立常數
tf.variable() 建立變數
數值運算:
tf.add(x,y,name) 加法
tf.subtract(x,y,name) 減法
tf.multiply(x,y,name) 乘法
tf.divide(x,y,name) 除法
tf.mod(x,y,name) 餘數
tf.sqrt(x,name) 平方
tf.abs(x,name) 絕對值
x : 輸入參數
y : 輸入參數
name : 設定運算名稱
建立連結:
tf.Session() 建立連結
說明:
session的原始意思為對談,在這邊的意思為把用戶端和執行裝置之間建立一個連結,有了這個連結就可以把建立好的計算圖再裝置中執行。
執行計算圖
sess=tf.Session()

sess.run() 執行計算圖

Session
Tensorflow是基於圖架構進行運算的深度學習框架,Session是圖和執行者之間的媒介,首先透過Session來啟動圖,而Session.run()是用來進行操作的,Session再使用完過後需要透過close來釋放資源,或是透過with as的方式來讓他自動釋放。

Constant
就是不可變的常數,以下透過程式碼來逐一講解

import tensorflow as tf
result=tf.constant(5)
print (result)
imgur
在沒有session.run的情況下,我們可以看到const跟tensor以及type,那麼這次改用session.run的方式來執行result

import tensorflow as tf
result=tf.constant(5)
with tf.Session() as sess:
    result=sess.run(result)
    print (result)

這樣就會印出5這個數字了

PlaceHolder
由於Tensorflow都是透過圖去進行運算的,因此在我們還不知道資料為何時,都會透過PlaceHolder先佔個位置,通常都是使用於input以及output的時候。

import tensorflow as tf
x=tf.constant(3)
y=tf.constant(4)
with tf.Session() as sess:
   print(sess.run(tf.add(x,y)))
上面的這段程式碼是給x跟y值,然後把x跟y相加起來,然後顯示出來,而下面的這段跟上面的差別就是a跟b都沒有被賦予值,而是建立出a跟b的tensor給圖使用

import tensorflow as tf
a=tf.placeholder(tf.int32)
b=tf.placeholder(tf.int32)
result=a+b
with tf.Session() as sess:
    print(sess.run(result,{a:3,b:4}))

Variable
訓練模型時,通常都會使用變數來儲存或是更新參數,主要都是用在weight跟bias部份,當初使化的時候,要把一個張量當作初始值傳入

import tensorflow as tf
b=tf.Variable(tf.zeros([2]))
init_op=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(b))
以上的tf.global_variables_initializer()這一個函數的用意是對變數進行初始化,然後再透過Session.run()來進行操作,以下就是輸出結果
imgur

train.Saver
會創建一個二進制文件,然後將變數名和tensor值儲存起來,首先要先透過以下的code來建立一個管理模型中的變數的Saver

saver = tf.train.Saver()
然後再透過下列的code把那些變數儲存到相對應的名稱及位置

saver.save(sess, 'model.ckpt')

沒有留言:

張貼留言