TensorFlow学习笔记(九)tf搭建神经网络基本流程
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow学习笔记(九)tf搭建神经网络基本流程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 搭建神經(jīng)網(wǎng)絡(luò)基本流程
定義添加神經(jīng)層的函數(shù)
1.訓練的數(shù)據(jù)
2.定義節(jié)點準備接收數(shù)據(jù)
3.定義神經(jīng)層:隱藏層和預測層
4.定義 loss 表達式
5.選擇 optimizer 使 loss 達到最小
然后對所有變量進行初始化,通過 sess.run optimizer,迭代 1000 次進行學習:
import tensorflow as tf import numpy as np# 添加層 def add_layer(inputs, in_size, out_size, activation_function=None):# add one more layer and return the output of this layerWeights = tf.Variable(tf.random_normal([in_size, out_size]))biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)Wx_plus_b = tf.matmul(inputs, Weights) + biasesif activation_function is None:outputs = Wx_plus_belse:outputs = activation_function(Wx_plus_b)return outputs# 1.訓練的數(shù)據(jù) # Make up some real data x_data = np.linspace(-1,1,300)[:, np.newaxis] noise = np.random.normal(0, 0.05, x_data.shape) y_data = np.square(x_data) - 0.5 + noise# 2.定義節(jié)點準備接收數(shù)據(jù) # define placeholder for inputs to network xs = tf.placeholder(tf.float32, [None, 1]) ys = tf.placeholder(tf.float32, [None, 1])# 3.定義神經(jīng)層:隱藏層和預測層 # add hidden layer 輸入值是 xs,在隱藏層有 10 個神經(jīng)元 l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu) # add output layer 輸入值是隱藏層 l1,在預測層輸出 1 個結(jié)果 prediction = add_layer(l1, 10, 1, activation_function=None)# 4.定義 loss 表達式 # the error between prediciton and real data loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))# 5.選擇 optimizer 使 loss 達到最小 # 這一行定義了用什么方式去減少 loss,學習率是 0.1 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# important step 對所有變量進行初始化 #init = tf.initialize_all_variables() init = tf.global_variables_initializer() sess = tf.Session() # 上面定義的都沒有運算,直到 sess.run 才會開始運算 sess.run(init)# 迭代 1000 次學習,sess.run optimizer for i in range(1000):# training train_step 和 loss 都是由 placeholder 定義的運算,所以這里要用 feed 傳入?yún)?shù)sess.run(train_step, feed_dict={xs: x_data, ys: y_data})if i % 50 == 0:# to see the step improvementprint(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))2. 主要步驟的解釋:
import tensorflow as tf import numpy as np- 導入或者隨機定義訓練的數(shù)據(jù) x 和 y:
- 先定義出參數(shù) Weights,biases,擬合公式 y,誤差公式 loss:
- 選擇 Gradient Descent 這個最基本的 Optimizer:
- 神經(jīng)網(wǎng)絡(luò)的 key idea,就是讓 loss 達到最小:
- 前面是定義,在運行模型前先要初始化所有變量:
- 接下來把結(jié)構(gòu)激活,sesseion像一個指針指向要處理的地方:
- init 就被激活了,不要忘記激活:
- 訓練201步:
- 要訓練 train,也就是 optimizer:
- 每 20 步打印一下結(jié)果,sess.run 指向 Weights,biases 并被輸出:
所以關(guān)鍵的就是 y,loss,optimizer 是如何定義的。
總結(jié)
以上是生活随笔為你收集整理的TensorFlow学习笔记(九)tf搭建神经网络基本流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow学习笔记(七)fee
- 下一篇: TensorFlow学习笔记(十)tf搭