※J.Y Chen 的個人部落格 ※

Just Follow Our Heart And We will shine!

112 瀏覽人次

【AI&BIG-DATA】tensorflow的第一堂課-變數(variable)

Published: in Code by .

變數類型

Tensorflow變數類型主要有三種,tf.constanttf.Variable以及tf.placeholder

  1. tf.constant
    顧名思義,他就是一個constant的類別,你可以放入各式的資料型態,做一些基礎運算,Ex: tf.add 等等。使用時機像是有時候我們會放accuracy或者一些運算完的模型資訊等等。因此,在創建一些tf.constant的可以簡單的用上面語法或者是你假如有一個numpy array也可以直接使用 tf.convert_to_tensor。

  2. tf.Variable
    簡單來說,tf.variable就是放置可學習的變數或者說將可求導的變數,例如: Neural Network的weight或者bias。因此,在tf.variable中會紀錄他是learnable 或者在autograph中可被求導變數。

  3. 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

©2019 - 2024 Henry Chen