TensorFlow學習筆記——節點(constant、placeholder、Variable)


一、 constant(常量)

  constant是TensorFlow的常量節點,通過constant方法創建,其是計算圖(Computational Graph)中的起始節點,是傳入數據。

創建方式

cons = tf.constant(value=[1,2],dtype=tf.float32,shape=(1,2),name='testconst', verify_shape=False)

參數說明

value:初始值,必填,必須是一個張量(1或[1,2,3]或[[1,2,3],[2,2,3]]或......)

dtype:數據類型,選填,默認為value的數據類型,傳入參數為tensorflow下的枚舉值(float32,float64.......)

shape:數據形狀,選填,默認為value的shape,設置時不得比value小,可以比value階數、維度更高,超過部分按value提供最后一個數字填充,示例代碼如下

import tensorflow as tf

sess = tf.InteractiveSession()
cons1 = tf.constant([1, 2, 3], shape=[2, 3])
print(sess.run(cons1))
# [[1 2 3]
#  [3 3 3]]

name:常量名,選填,默認值不重復,根據創建順序為(Const,Const_1,Const_2.......)

verify_shape:是否驗證value的shape和指定shape相符,若設為True則進行驗證,不相符時會拋出異常

 

二、placeholder(占位符)

   placeholder是TensorFlow的占位符節點,由placeholder方法創建,其也是一種常量,但是由用戶在調用run方法是傳遞的,也可以將placeholder理解為一種形參。即其不像constant那樣直接可以使用,需要用戶傳遞常數值。

創建方式

X = tf.placeholder(dtype=tf.float32, shape=[144, 10], name='X')

參數說明

dtype:數據類型,必填,默認為value的數據類型,傳入參數為tensorflow下的枚舉值(float32,float64.......)

shape:數據形狀,選填,不填則隨傳入數據的形狀自行變動,可以在多次調用中傳入不同形狀的數據

name:常量名,選填,默認值不重復,根據創建順序為(Placeholder,Placeholder_1,Placeholder_2.......)

示例代碼

import tensorflow as tf
import numpy.random as random

#占位符shape不設時會按傳入參數自行匹配
node1 = tf.placeholder(tf.float32)  # , shape=[4, 5])
node2 = tf.placeholder(tf.float32)  # , shape=[4, 5])
op = tf.multiply(node1, node2)
session = tf.Session()
const1 = tf.constant(random.rand(4, 5))
const2 = tf.constant(random.rand(4, 5))
#可以傳入初始化后的常量
print(session.run(op, {node1: session.run(const1), node2: session.run(const2)}))
#也可以直接傳入張量,其實同初始化后的常量一致
print(session.run(op, {node1: random.rand(2, 3), node2: random.rand(2, 3)}))

三、Variable(變量)

  Vatiable是tensorflow的變量節點,通過Variable(注:V大寫方法創建,並且需要傳遞初始值。在使用前需要通過tensorflow的初始化方法進行初始化。

 創建方式

W = tf.Variable(initial_value=tf.zeros([9, 5]),  # 初始值,必填,張量或可以轉換為張量的Python對象。初始值必須有指定一個形狀,除非`validate_shape`設置為False。
                trainable=True,  # 如果`True`,則默認值也將變量添加到圖形中集合`GraphKeys.TRAINABLE_VARIABLES`。這個集合用作“Optimizer”類使用的默認變量列表
                collections=None,  # 圖表集合鍵的列表。新的變量被添加到這些集合。默認為`[GraphKeys.GLOBAL_VARIABLES]`。
                validate_shape=True,  # 如果`False`,允許變量用初始化未知形狀的值。如果“True”,默認的形狀`initial_value`必須是已知的。
                caching_device=None,  # 可選設備字符串,描述變量的位置應該被緩存以供閱讀。默認為變量的設備。如果不是“None”,則緩存在另一個設備上。典型的用途是緩存在使用變量的Ops所在的設備上進行重復數據刪除復制`Switch`和其他條件語句。
                name='W',  # 變量的可選名稱。默認為“Variable”並獲取自動去重(Variable_1,Variable_2....)。
                variable_def=None, # `VariableDef`協議緩沖區。如果不是“無”,則重新創建變量對象及其內容,引用變量的節點在圖中,必須已經存在。圖形沒有改變。`variable_def`和其他參數是互斥的。
                dtype=tf.float32, # 如果設置,initial_value將被轉換為給定的類型。如果`None',數據類型將被保存(如果`initial_value`是一個張量),或者“convert_to_tensor”來決定。
                expected_shape=None,  # 張量的Shape。如果設置,initial_value需要符合這個形狀。
                import_scope=None)  # 可選的字符串。名稱范圍添加到`Variable.`僅在從協議緩沖區初始化時使用。

參數說明Variable函數的全部參數如上方代碼展示,不過目前我在學習中遇到常用的的參數只有如下幾個,其他的參數暫時沒在代碼中遇到

initial_value,dtype,name,創建代碼類似下面這樣

    W = tf.Variable(tf.zeros([3, 10]), dtype=tf.float64, name='W')

 

 

原創聲明

作者:Vulper

地址:http://www.cnblogs.com/Vulpers/p/7809276.html

本文版權歸作者和博客園共同所有,歡迎轉載,轉載必須注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM