1. 程式人生 > >tensorflow學習(3)variable和placeholder使用.

tensorflow學習(3)variable和placeholder使用.

在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.]}))