1 定義 add_layer()
定義乙個新增層的函式可以很容易的新增神經層
神經層裡常見的引數通常有weights
、biases
和激勵函式
【權重 偏置 啟用函式】
importtensorflow as tf
#輸入值、輸入的大小、輸出的大小和激勵函式,我們設定預設的激勵函式是none
def add_layer(inputs, in_size, out_size, activation_function=none):
### 定義weights和biases ###
#在生成初始引數時,隨機變數(normal distribution)會比全部為0要好很多,所以我們這裡的weights為乙個in_size行, out_size列的隨機變數矩陣
weights =tf.variable(tf.random_normal([in_size, out_size]))
#機器學習中,biases的推薦值不為0
biases = tf.variable(tf.zeros([1, out_size]) + 0.1)
#定義網路未啟用的值
wx_plus_b = tf.matmul(inputs, weights) + biases #
tf.matmul()是矩陣的乘法
#激勵函式為none時,輸出就是當前的**值——w*x + b
#不為none時,就把 w*x + b 傳到 activation_function() 函式中得到輸出
if activation_function is
none:
outputs =wx_plus_b
else
: outputs =activation_function(wx_plus_b)
return
outputs
2 匯入資料
### 構建所需要的資料 ###
#引入了 noise,使得x_data 和 y_data 不是標準的一元二次函式關係
x_data = np.linspace(-1,1,300, dtype=np.float32)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
y_data = np.square(x_data) - 0.5 +noise
#利用佔位符定義我們所需的神經網路的輸入
#tf.placeholder()就是代表佔位符,這裡的none代表無論輸入有多少都可以
#因為輸入只有乙個特徵,所以這裡是1
xs = tf.placeholder(tf.float32, [none, 1])
ys = tf.placeholder(tf.float32, [none, 1])
3 搭建網路
### 定義神經層 ###
#通常神經層都包括輸入層、隱藏層和輸出層
#這裡,輸入層1個、隱藏層10個、輸出層1個的神經網路
#隱藏層 【啟用函式 tf.nn.relu】
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
#輸出層
#輸入就是隱藏層的輸出——l1,輸入有10層(隱藏層的輸出層),輸出有1層
prediction = add_layer(l1, 10, 1, activation_function=none)
#計算誤差
#平方求和再取平均
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))
#提公升準確率
#代表以0.1的效率來最小化誤差loss
train_step = tf.train.gradientdescentoptimizer(0.1).minimize(loss)
#變數初始化
init = tf.global_variables_initializer() #
替換成這樣就好
#定義session 【只有session.run()才會執行我們定義的運算】
sess =tf.session()
sess.run(init)
4 訓練
for i in range(1000):#機器學習的內容是train_step, 用 session 來 run 每一次 training 的資料,逐步提公升神經網路的**準確性
sess.run(train_step, feed_dict=)
if i % 50 ==0:
#to see the step improvement
print(sess.run(loss, feed_dict=))
全部**
importtensorflow as tf
import
numpy as np
#輸入值、輸入的大小、輸出的大小和激勵函式,我們設定預設的激勵函式是none
def add_layer(inputs, in_size, out_size, activation_function=none):
### 定義weights和biases ###
#在生成初始引數時,隨機變數(normal distribution)會比全部為0要好很多,所以我們這裡的weights為乙個in_size行, out_size列的隨機變數矩陣
weights =tf.variable(tf.random_normal([in_size, out_size]))
#機器學習中,biases的推薦值不為0
biases = tf.variable(tf.zeros([1, out_size]) + 0.1)
#定義網路未啟用的值
wx_plus_b = tf.matmul(inputs, weights) + biases #
tf.matmul()是矩陣的乘法
#激勵函式為none時,輸出就是當前的**值——w*x + b
#不為none時,就把 w*x + b 傳到 activation_function() 函式中得到輸出
if activation_function is
none:
outputs =wx_plus_b
else
: outputs =activation_function(wx_plus_b)
return
outputs
### 構建所需要的資料 ###
#引入了 noise,使得x_data 和 y_data 不是標準的一元二次函式關係
x_data = np.linspace(-1,1,300, dtype=np.float32)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
y_data = np.square(x_data) - 0.5 +noise
#利用佔位符定義我們所需的神經網路的輸入
#tf.placeholder()就是代表佔位符,這裡的none代表無論輸入有多少都可以
#因為輸入只有乙個特徵,所以這裡是1
xs = tf.placeholder(tf.float32, [none, 1])
ys = tf.placeholder(tf.float32, [none, 1])
### 定義神經層 ###
#通常神經層都包括輸入層、隱藏層和輸出層
#這裡,輸入層1個、隱藏層10個、輸出層1個的神經網路
#隱藏層 【啟用函式 tf.nn.relu】
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
#輸出層
#輸入就是隱藏層的輸出——l1,輸入有10層(隱藏層的輸出層),輸出有1層
prediction = add_layer(l1, 10, 1, activation_function=none)
#計算誤差
#平方求和再取平均
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))
#提公升準確率
#代表以0.1的效率來最小化誤差loss
train_step = tf.train.gradientdescentoptimizer(0.1).minimize(loss)
#變數初始化
init = tf.global_variables_initializer() #
替換成這樣就好
#定義session 【只有session.run()才會執行我們定義的運算】
sess =tf.session()
sess.run(init)
for i in range(1000):
#機器學習的內容是train_step, 用 session 來 run 每一次 training 的資料,逐步提公升神經網路的**準確性
sess.run(train_step, feed_dict=)
if i % 50 ==0:
#to see the step improvement
print(sess.run(loss, feed_dict=))
莫煩 Tensorflow 變數
理解了tensorflow必須通過session去run才能輸出值,如果不通過session,那麼只能得到變數名字和型別,加深理解了tensorflow的機制。import tensorflow as tf state tf.variable 0,name counter print state 輸...
莫煩Tensorflow 入門
tensorflow 初步嘗試 建立資料 搭建模型 計算誤差 傳播誤差 初始會話 不斷訓練 import tensorflow as tf import numpy as np 建立資料 x data np.random.rand 100 astype np.float32 y data x dat...
莫煩tensorflow系列教程學習
1.普通機器學習 函式係數 y 0.1x 0.3 coding gbk import tensorflow as tf import numpy as np 生成資料,y 0.1x 0.3 x data np.random rand 100 astype np.float32 y data x da...