作者: Morvan 編輯: Morvan
Tensorflow 是非常重視結(jié)構(gòu)的, 我們得建立好了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu), 才能將數(shù)字放進(jìn)去, 運(yùn)行這個(gè)結(jié)構(gòu).
這個(gè)例子簡(jiǎn)單的闡述了 tensorflow 當(dāng)中如何用代碼來(lái)運(yùn)行我們搭建的結(jié)構(gòu).
首先, 我們這次需要加載 tensorflow 和 numpy 兩個(gè)模塊, 并且使用 numpy來(lái)創(chuàng)建我們的數(shù)據(jù).
import tensorflow as tfimport numpy as np# create datax_data = np.random.rand(100).astype(np.float32)y_data = x_data*0.1 + 0.3
接著, 我們用 tf.Variable
來(lái)創(chuàng)建描述 y
的參數(shù). 我們可以把 y_data = x_data*0.1 + 0.3
想象成 y=Weights * x + biases
, 然后神經(jīng)網(wǎng)絡(luò)也就是學(xué)著把 Weights 變成 0.1, biases 變成 0.3.
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))biases = tf.Variable(tf.zeros([1]))y = Weights*x_data + biases
接著就是計(jì)算 y
和 y_data
的誤差:
loss = tf.reduce_mean(tf.square(y-y_data))
反向傳遞誤差的工作就教給optimizer
了, 我們使用的誤差專遞方法是梯度下降法: Gradient Descent
讓后我們使用 optimizer
來(lái)進(jìn)行參數(shù)的更新.
optimizer = tf.train.GradientDescentOptimizer(0.5)train = optimizer.minimize(loss)
到目前為止, 我們只是建立了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu), 還沒(méi)有使用這個(gè)結(jié)構(gòu). 在使用這個(gè)結(jié)構(gòu)之前, 我們必須先初始化所有之前定義的Variable
, 所以這一步是很重要的!
# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法init = tf.global_variables_initializer() # 替換成這樣就好
接著,我們?cè)賱?chuàng)建會(huì)話 Session
. 我們會(huì)在下一節(jié)中詳細(xì)講解 Session. 我們用 Session
來(lái)執(zhí)行 init
初始化步驟. 并且,用 Session
來(lái) run
每一次 training 的數(shù)據(jù). 逐步提升神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)準(zhǔn)確性.
sess = tf.Session()sess.run(init) # Very importantfor step in range(201): sess.run(train) if step % 20 == 0: print(step, sess.run(Weights), sess.run(biases))
y=Weights*x_data+biases 可以認(rèn)為是神經(jīng)網(wǎng)絡(luò)
x_data:訓(xùn)練集的數(shù)據(jù)
y_data:訓(xùn)練集的標(biāo)簽
通過(guò)訓(xùn)練集訓(xùn)練,使得y=Weights*x_data+biases 最終有正確的結(jié)構(gòu)即y_data=x_data*0.1+0.3,輸出正確的結(jié)構(gòu)。
聯(lián)系客服