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

2021-09-28 21:25:08 字數 1838 閱讀 2136

例項描述:

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

1.資料集介紹

所謂的「異或資料」是**於異或操作。

2.網路模型介紹

3.完整**

import tensorflow as tf

import numpy as np

# 網路結構:2維輸入 --> 2維隱藏層 --> 1維輸出

#定義引數

learning_rate =1e-

4n_input =

2n_label =

1n_hidden =

2#定義佔位符

x = tf.placeholder(tf.float32,

[none

,n_input]

)y = tf.placeholder(tf.float32,

[none

, n_label]

)#定義學習引數

weights =

biases =

#定義網路模型

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'])

)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'

)with tf.session(

)as sess:

sess.run(tf.global_variables_initializer())

for i in

range

(100000):

sess.run(train_step,feed_dict=

)print

(sess.run(y_pred,feed_dict=))

print

('隱藏層輸出:'

)print

(sess.run(layer_1,feed_dict=

))

結果:

第乙個是4行1列的陣列,用四捨五入法來取值,與我們定義的輸出y完全吻合。第二個為4行2列的陣列,為隱藏層的輸出。第二個輸出是4行2列陣列,其中第一列為隱藏層第乙個節點的輸出,第二列為隱藏層第二各節點的輸出,四捨五入取整顯示結果:

[[0. 0.]

[0. 1.]

[0. 1.]

[0. 1.]]

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

一 介紹 多層神經網路非常好理解,就是在輸入和輸出中間多加些神經元,每一層可以加多個,也可加很多層。下面通過乙個例子將異或資料進行分類。二 例項描述 通過構建異或規律的資料集作為模擬樣本,構建乙個簡單的多層神經網路來擬合其樣本特徵完成分類任務。1 異或規則 當兩個數相同時,輸出為0,不相同時輸出為1...

神經網路隱含層節點數

kolmogorov定理 如果乙個隨機變數序列 1,2.滿足不等式 1 n d n n 為求和範圍 則事件 lim n 1 n 1 k n k 1 n 1 k n m k 0 的概率為1.bp神經網路構建中中間隱含層數目n2,輸入層數目n1,輸出層數目m n2 sqrt n1 m 1 a a 1 1...

神經網路隱含層的物理意義

softmax回歸與多層神經網路都可以實現多分類器,兩種分類器的模型如下圖所示 softmax回歸 多層神經網路 根據圖示我們可以看到,多層神經網路模型與回歸模型,在原理上是相似的,都是構造線性模型,多層神經網路只是在輸入層與輸出層之間新增了n個隱含層 n 1 新增隱含層的物理意義是什麼呢?無論是s...