Tensorflow中的placeholder和Variable | MI-機器智能 | Tensorflow技能樹
更多AI資訊,關注微信公眾號,搜索:九三智能控
二者的主要區別
- tf.Variable:主要在於一些可訓練變數(trainable variables),比如模型的權重(weights,W)或者偏執值(bias);
- 聲明時,必須提供初始值;
- 名稱的真實含義,在於變數,也即在真實訓練時,其值是會改變的,自然事先需要指定初始值;
weights = tf.Variable( tf.truncated_normal([IMAGE_PIXELS, hidden1_units], stddev=1./math.sqrt(float(IMAGE_PIXELS)), name=weights) ) biases = tf.Variable(tf.zeros([hidden1_units]), name=biases)
- tf.placeholder:用於得到傳遞進來的真實的訓練樣本:
- 不必指定初始值,可在運行時,通過 Session.run 的函數的 feed_dict 參數指定;
- 這也是其命名的原因所在,僅僅作為一種佔位符;
images_placeholder = tf.placeholder(tf.float32, shape=[batch_size, IMAGE_PIXELS]) labels_placeholder = tf.placeholder(tf.int32, shape=[batch_size])
二者真實的使用場景
for step in range(FLAGS.max_steps): feed_dict = { images_placeholder = images_feed, labels_placeholder = labels_feed } _, loss_value = sess.run([train_op, loss], feed_dict=feed_dict)
當執行這些操作時,tf.Variable 的值將會改變,也即被修改,這也是其名稱的來源(variable,變數)。
函數說明
tf.placeholder(dtype, shape=None, name=None)
參數:
- dtype:數據類型。常用的是tf.float32,tf.float64等數值類型
- shape:數據形狀。默認是None,就是一維值,也可以是多維,比如[2,3], [None, 3]表示列是3,行不定
- name:名稱。
[html] view plain copy
- 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})) # Will succeed.
返回:Tensor 類型
placeholder(type,strucuct…)是tensorflow中又一保存數據的利器,它的第一個參數是你要保存的數據的數據類型,大多數是tensorflow中的float32數據類型,後面的參數就是要保存數據的結構,比如要保存一個1×2的矩陣,則struct=[1 2]。它在使用的時候和前面的variable不同的是在session運行階段,需要給placeholder提供數據,利用feed_dict的字典結構給placeholdr變數「喂數據」。
舉個栗子
# -*- coding: utf-8 -*-
"""
Created on
@author:
"""
import tensorflow as tf
a=tf.placeholder(tf.float32)
b=tf.placeholder(tf.float32)
c=tf.add(a,b)
with tf.Session() as sess:
print(sess.run(c,feed_dict={a:10,b:30})) #把10賦給a,30賦給b
運行結果:
40.0
輸入一個數據類型為float32,數據格式為[……],名稱為x-input的參數
參考資料
What』s the difference between tf.placeholder and tf.Variable
https://blog.csdn.net/zj360202/article/details/70243127
微信群&交流合作
- 加入微信群:不定期分享資料,拓展行業人脈請在公眾號留言:「微信號+名字+研究領域/專業/學校/公司」,我們將很快與您聯繫。
- 投稿、交流合作請留言聯繫。
http://weixin.qq.com/r/AC91bd-EloLprZsO93oS (二維碼自動識別)
推薦閱讀:
※有沒有基於移動端GPU的深度學習前饋網路框架?
※在Docker中部署使用Tensorflow && Docker基本用法介紹
※機器學習基礎:線性回歸
※學習筆記TF041:分散式並行
※tensorflow中的tensorboard可視化中的準確率損失率曲線,為什麼有類似毛刺一樣?
TAG:TensorFlow | AI技術 | 機器智能 |