在tensorflow中,定義了某字符串是變量,它纔是變量
定義的語法
state = tf.Variable()
import tensorflow as tf
state = tf.Variable(0, name='counter')
# 定義常量 one
one = tf.constant(1)
# 定義加法步驟 (注: 此步並沒有直接計算)
new_value = tf.add(state, one)
# 將 State 更新成 new_value
update = tf.assign(state, new_value)
如果在tensorflow中設定了變量,那麼變量的初始化是非常重要的!!!,所以定義了變量之後,一定要進行初始化操作.,
init = tf.initialize_all_variables()
.
到這裏變量還是沒有被激活,需要在sess裏面,sess.run(init)後,進一步激活init這一步.
# 如果定義 Variable, 就一定要 initialize
# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法
init = tf.global_variables_initializer() # 替換成這樣就好
# 使用 Session
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
sess.run(update)
print(sess.run(state))
注意:print(state)是不起任何作用的!
一定要把sess的指針指向state後再進行print 才能得到想要的值.
placeholder的使用.
placeholder是tensorflow中的佔位符,是用於暫時存儲變量的.
tensorflow如果想要從外部傳入data,那就需要使用tf.placeholder(),然後以如下形式將數據進行傳入.
sess.run(***, feed_dict={input: **})
.
示例:首先定義佔位符和參數值:
import tensorflow as tf
#在 Tensorflow 中需要定義 placeholder 的 type ,一般爲 float32 形式
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
# mul = multiply 是將input1和input2 做乘法運算,並輸出爲 output
ouput = tf.multiply(input1, input2)
接下來,傳值的工作交給了sess.run(),需要傳入的值放在了feed_dict = {}裏面,並一一對應input的placeholder的值.
with tf.Session() as sess:
print(sess.run(ouput, feed_dict={input1: [7.], input2: [2.]}))