tf.placeholder函數說明

函數形式:
tf.placeholder(
    dtype,
    shape=None,
    name=None
)
參數:
dtype:數據類型。經常使用的是tf.float32,tf.float64等數值類型
shape:數據形狀。默認是None,就是一維值,也能夠是多維(好比[2,3], [None, 3]表示列是3,行不定)
name:名稱
爲何要用placeholder?
       Tensorflow的設計理念稱之爲計算流圖,在編寫程序時,首先構築整個系統的graph,代碼並不會直接生效,這一點和python的其餘數值計算庫(如Numpy等)不一樣,graph爲靜態的,相似於docker中的鏡像。而後,在實際的運行時,啓動一個session,程序纔會真正的運行。這樣作的好處就是:避免反覆地切換底層程序實際運行的上下文,tensorflow幫你優化整個系統的代碼。咱們知道,不少python程序的底層爲C語言或者其餘語言,執行一行腳本,就要切換一次,是有成本的,tensorflow經過計算流圖的方式,幫你優化整個session須要執行的代碼,仍是頗有優點的。python

       因此placeholder()函數是在神經網絡構建graph的時候在模型中的佔位,此時並無把要輸入的數據傳入模型,它只會分配必要的內存。等創建session,在會話中,運行模型的時候經過feed_dict()函數向佔位符喂入數據。docker

代碼示例:
import tensorflow as tf
import numpy as np

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)

output = tf.multiply(input1, input2)

with tf.Session() as sess:
print sess.run(output, feed_dict = {input1:[3.], input2: [4.]})

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)

with tf.Session() as sess:
#print(sess.run(y)) # ERROR:此處x尚未賦值
rand_array = np.random.rand(1024, 1024)
print(sess.run(y, feed_dict={x: rand_array}))
 網絡

參考資料:https://www.jianshu.com/p/ec261a65e3c9
---------------------
做者:清晨的光明
來源:CSDN
原文:https://blog.csdn.net/kdongyi/article/details/82343712
版權聲明:本文爲博主原創文章,轉載請附上博文連接!session

相關文章
相關標籤/搜索