【AI&BIG-DATA】tensorflow的第一堂課-變數(variable)
Published:
by .變數類型
Tensorflow變數類型主要有三種,tf.constant、tf.Variable以及tf.placeholder。
- tf.constant
顧名思義,他就是一個constant的類別,你可以放入各式的資料型態,做一些基礎運算,Ex: tf.add 等等。使用時機像是有時候我們會放accuracy或者一些運算完的模型資訊等等。因此,在創建一些tf.constant的可以簡單的用上面語法或者是你假如有一個numpy array也可以直接使用 tf.convert_to_tensor。
- tf.Variable
簡單來說,tf.variable就是放置可學習的變數或者說將可求導的變數,例如: Neural Network的weight或者bias。因此,在tf.variable中會紀錄他是learnable 或者在autograph中可被求導變數。 - tf.placeholder
主要是tf在計算Graph的方法。在使用時,我們是不會先給定一個初始值,而是給定長度或者資料格式先佔有一個空間。簡單來說就是,和Variable或者constant不一樣的是,不需給定初始值,但必須預先定義好資料類型與長寬深度。主要使用為在train模型,我們會放 x 與 y 的資料。在看TF1.X的程式會很常看到這個變數。在TF2.0中,已經不使用這個變數,蠻多都改成使用tf.data的api在導資料。而且在TF2.0中,在eager execution下,也不需要去預先定義這些資料空間。
簡單建立資料
假如,今天我想要建立一個隨機矩陣,此時我們可以使用下面各式不同的分配來建立,其中,這樣的隨機方法我們常用於最初的深度學習中的weight或bias。因為,當你的weight不是random產生,而是一個齊一性的matrix(矩陣),會讓您所學出來的權重都是一樣,網路會變成純粹的線性。因此,權重均必須random產生。
#Example random by normal distribution a = tf.random.normal([6,6],mean=0,stddev=1) #random by truncated normal distribution b = tf.random.truncated_normal([6,6],mean=0,stddev=1) #random by uniform c = tf.random.uniform([6,6],minval=0,maxval=1)
選取資料
有時候,我們可能想將資料選取資料,看一下資料長什麼樣子。尤其是當我們想選出特定的row或者index該如何做呢?可以利用下面的語法
#Example for select instance a = tf.ones([1,5,5,3]) #tf.ones("次數" , "一次做幾次" , "橫數" , "行數") a[0][0].shape #Output shape:TensorShape([5, 3]) a[...,2].shape #Output shape:TensorShape([1, 5, 5]) #use index select tf.gather_nd(a,[0]).shape #Output shape: TensorShape([5, 5, 3]) #select axis=1 , row 2 and 3 tf.gather(a,axis=1,indices=[2,3]).shape #Output shape: TensorShape([1, 2, 5, 3])
此文為重點整理,方便閱讀。
文章出處: https://ithelp.ithome.com.tw/articles/10216686
[Day-2] Tensorflow 基本語法 – Part I