一 介紹
多層神經網路非常好理解,就是在輸入和輸出中間多加些神經元,每一層可以加多個,也可加很多層。下面通過乙個例子將異或資料進行分類。
二 例項描述
通過構建異或規律的資料集作為模擬樣本,構建乙個簡單的多層神經網路來擬合其樣本特徵完成分類任務。
1 異或規則
當兩個數相同時,輸出為0,不相同時輸出為1,這就是異或規則。表示為兩類資料:
(0,0)和(1,1)為一類
(0,1)和(1,0)為一類
2 網路模型介紹
本例使用乙個隱藏層來解決這個問題,下圖是網路結構。
三 **
import tensorflow as tf
import numpy as np
# 網路結構:2維輸入 --> 2維隱藏層 --> 1維輸出
learning_rate = 1e-4
n_input = 2
n_label = 1
n_hidden = 2
x = tf.placeholder(tf.float32, [none,n_input])
y = tf.placeholder(tf.float32, [none, n_label])
'''定義學習引數
這裡以字典方式定義權重w和b,裡面h1代表隱藏層,h2代表輸出層。
'''weights =
biases =
'''定義網路模型
該例模型正向結構入口為x,經過與第一層的w相乘再加上b,通過relu函式進行啟用轉化,最終生成layer_1,再將layer_1代入第二層,使用tanh啟用函式生成最終的輸出y_pred
'''layer_1 = tf.nn.relu(tf.add(tf.matmul(x, weights['h1']), biases['h1']))
y_pred = tf.nn.tanh(tf.add(tf.matmul(layer_1, weights['h2']),biases['h2']))
#y_pred = tf.nn.relu(tf.add(tf.matmul(layer_1, weights['h2']),biases['h2']))#區域性最優解
#y_pred = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['h2']),biases['h2']))
#leaky relus 40000次 ok
#layer2 =tf.add(tf.matmul(layer_1, weights['h2']),biases['h2'])
#y_pred = tf.maximum(layer2,0.01*layer2)
'''模型的反向使用均值平方差(即對**值與真實值的差取平均值)計算loss,最終使用adamoptimizer進行優化
'''loss=tf.reduce_mean((y_pred-y)**2)
train_step = tf.train.adamoptimizer(learning_rate).minimize(loss)
#構建模擬資料,手動建立x和y資料集,形成對應的異或關係。
#生成資料
x=[[0,0],[0,1],[1,0],[1,1]]
y=[[0],[1],[1],[0]]
x=np.array(x).astype('float32')
y=np.array(y).astype('int16')
#載入sess = tf.interactivesession()
sess.run(tf.global_variables_initializer())
#訓練for i in range(10000):
sess.run(train_step,feed_dict= )
#計算**值
print(sess.run(y_pred,feed_dict=))
#輸出:已訓練100000次
#檢視隱藏層的輸出
print(sess.run(layer_1,feed_dict=))
四 執行結果[[ 0.11088282]
[ 0.59579927]
[ 0.76093489]
[ 0.28163004]]
[[ 0. 0. ]
[ 0.73359621 0. ]
[ 0. 0.85488993]
[ 0.22713149 0. ]]
五 說明
第乙個是4行1列的陣列,用四捨五入法來取值,與我們定義的輸出y完全吻合。
第二個是4行2列的陣列,為隱藏層的輸出。
使用帶隱含層的神經網路擬合異或操作
例項描述 通過構建符合異或規律的資料集作為模擬樣本,構建乙個簡單的多層神經網路來擬合其樣本特徵完成分類任務。1.資料集介紹 所謂的 異或資料 是 於異或操作。2.網路模型介紹 3.完整 import tensorflow as tf import numpy as np 網路結構 2維輸入 2維隱藏...
神經網路的隱藏層
通常,卷積神經網路除了輸入和輸出層之外還有四個基本的神經元層,在三層神經網路中,這基層被稱為隱藏層 卷積層 convolution 啟用層 activation 池化層 pooling 完全連線層 fully connected 卷積層在最初的卷積層中,成千上萬的神經元充當第一組過濾器,搜尋影象中的...
線性神經網路(異或)
v np.dot x,w np.dot x,w array矩陣相乘 4 3乘3 1等於4 1 w lr x.t.dot y v int x.shape 0 np.dot x,w array矩陣相乘 3 4乘4 1等於3 1 v np.dot x,w np.dot x,w array矩陣相乘 4 3乘...