使用帶隱藏層的神經網路擬合異或操作

2021-08-19 17:35:19 字數 2494 閱讀 5303

一 介紹

多層神經網路非常好理解,就是在輸入和輸出中間多加些神經元,每一層可以加多個,也可加很多層。下面通過乙個例子將異或資料進行分類。

二 例項描述

通過構建異或規律的資料集作為模擬樣本,構建乙個簡單的多層神經網路來擬合其樣本特徵完成分類任務。

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乘...