记录 之 tf.placeholder() 函数的意义及用法
生活随笔
收集整理的這篇文章主要介紹了
记录 之 tf.placeholder() 函数的意义及用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數原型:
tf.placeholder(dtype, shape=None, name=None)參數釋義:1.dtype:數據類型。常用的是tf.float32,tf.float64等數值類型
? ? ? ? ? ? ? ? ? 2.shape:數據形狀。默認是None,就是一維值,也可以是多維(比如[2,3], [None, 3]表示列是3,行不定)
? ? ? ? ? ? ? ? ? 3.name:名稱
在編寫程序時,首先構筑整個系統的graph,此時圖中的節點是未經初始化的,代碼并未生效,這一點和python的其他數值計算庫(如Numpy等)不同,graph為靜態的。在實際的運行時,啟動一個session,程序才會真正的運行。placeholder()函數是在神經網絡構建graph的時候在模型中的占位,此時并沒有把要輸入的數據傳入模型,它只會分配必要的內存。等建立session,在會話中,運行模型的時候通過feed_dict()函數向占位符輸入數據。通常用來獲取模型的輸入數據。
兩種用法:1.用來獲取模型的輸入數據
import tensorflow as tf import numpy as npinput1 = tf.placeholder(tf.float32, [], name='input1') #為輸入數據input1定義占位符 input2 = tf.placeholder(tf.float32, [], name='input2') #為input2定義占位符output = tf.multiply(input1, input2)with tf.Session() as sess:data_dict = {input1:[3.], input2: [4.]}print(sess.run(output, feed_dict=data_dict)) #通過sess.run中的feed_dict賦值?這里更復雜的我們可以把input1,理解為輸入的訓練數據;input2,理解為輸入的訓練數據的標簽
2.用來定義某些常量
import tensorflow as tf import osbatch_size = tf.Variable(tf.placeholder(tf.int64, [], 'batch_size_1'),trainable=False, collections=[], name='batch_size')init = tf.variables_initializer([batch_size])print(batch_size.name)data_dict = {'batch_size_1:0' : 8} #注意這里要為占位符數據的名稱,由于這里的占位符是定義在tf.Variable()里的,因此,二者的命名前綴一致,只需改實際名稱即可,注意要在末尾加 ":0" sess = tf.Session() print(sess.run(init, feed_dict=data_dict)) #在初始化變量時為占位符賦值 print(sess.run(batch_size))由此,我們可見,為tf.placeholder()數據賦值時,總是依賴某一個函數的運行的
總結
以上是生活随笔為你收集整理的记录 之 tf.placeholder() 函数的意义及用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sorry, user *** is n
- 下一篇: tfrecord数据报错 Invalid