tf.placeholder函数说明
函數(shù)形式:
tf.placeholder(
? ? dtype,
? ? shape=None,
? ? name=None
)
參數(shù):
dtype:數(shù)據(jù)類型。常用的是tf.float32,tf.float64等數(shù)值類型
shape:數(shù)據(jù)形狀。默認(rèn)是None,就是一維值,也可以是多維(比如[2,3], [None, 3]表示列是3,行不定)
name:名稱
為什么要用placeholder?
? ? ? ?Tensorflow的設(shè)計理念稱之為計算流圖,在編寫程序時,首先構(gòu)筑整個系統(tǒng)的graph,代碼并不會直接生效,這一點和python的其他數(shù)值計算庫(如Numpy等)不同,graph為靜態(tài)的,類似于docker中的鏡像。然后,在實際的運行時,啟動一個session,程序才會真正的運行。這樣做的好處就是:避免反復(fù)地切換底層程序?qū)嶋H運行的上下文,tensorflow幫你優(yōu)化整個系統(tǒng)的代碼。我們知道,很多python程序的底層為C語言或者其他語言,執(zhí)行一行腳本,就要切換一次,是有成本的,tensorflow通過計算流圖的方式,幫你優(yōu)化整個session需要執(zhí)行的代碼,還是很有優(yōu)勢的。
? ? ? ?所以placeholder()函數(shù)是在神經(jīng)網(wǎng)絡(luò)構(gòu)建graph的時候在模型中的占位,此時并沒有把要輸入的數(shù)據(jù)傳入模型,它只會分配必要的內(nèi)存。等建立session,在會話中,運行模型的時候通過feed_dict()函數(shù)向占位符喂入數(shù)據(jù)。
代碼示例:
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
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的tf.placeholder函数说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tf.variance_scaling_
- 下一篇: [转载]Tensorflow 的redu