實現簡單的神經網路

2021-08-08 01:46:27 字數 2082 閱讀 2113

python語言+tensorflow框架實現簡單的神經網路

訓練神經網路的過程一般分為3個步驟(不隨網路結構的變化而變化)

1.定義網路結構和前向傳播的輸出結果

2.定義損失函式以及選擇反向傳播優化演算法

3.生成會話,並在訓練資料上反覆執行反向傳播優化演算法

完整**如下:

import tensorflow as tf

from numpy.random import randomstate

batch_size=8

w1=tf.variable(tf.random_normal([2,3],stddev=1,seed=1))

w2=tf.variable(tf.random_normal([3,1],stddev=1,seed=1))

x=tf.placeholder(tf.float32,shape=(none,2),name='x-input')

y_=tf.placeholder(tf.float32,shape=(none,1),name='y-input')

a=tf.nn.relu(tf.matmul(x,w1))

y=tf.nn.relu(tf.matmul(a,w2))

cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))

train_step=tf.train.adamoptimizer(0.001).minimize(cross_entropy)

rdm=randomstate(1)

dataset_size=128

x=rdm.rand(dataset_size,2)

y=[[int(x1+x2<1)] for (x1,x2) in x]

with tf.session() as sess:

init_op=tf.initialize_all_variables()

sess.run(init_op)

print (sess.run(w1))

print (sess.run(w2))

steps=5000

for i in range(steps):

start=(i+batch_size)%dataset_size

end=min(start+batch_size,dataset_size)

sess.run(train_step,feed_dict=)

if i%1000==0:

total_entropy=sess.run(cross_entropy,feed_dict=)

print("after %d training step(s),cross entropy on all data is %g"%(i,total_entropy))

print(sess.run(w1))

print(sess.run(w2))

首先匯入模組——tensorflow和numpy,後續中利用numpy生成資料集

然後定義batch_size,神經網路訓練過程是批處理,每次處理一批資料,在此定義每次處理的資料量

然後定義神經網路引數,隨機初始化權值w1,w2。

定義輸入變數,x和y_。型別為浮點型的n維2列,n維1列的陣列。

定義網路前向傳播,a即為隱層,y為實際輸出。

然後定義損失函式和反向傳播優化演算法。採用交叉熵來定義損失函式,優化演算法採用adamoptimizer,定義學習率為0.001,目的是最小化交叉熵

(以上網路定義完成)

隨機產生輸入資料,x是128*2的矩陣,y是128*1的矩陣,其中y裡元素0表示負樣本,1表示正樣本。

接下來,建立乙個會話來執行tensorflow程式。

迭代5000次(steps),每次選擇batch_size個樣本進行訓練,每迭代1000次,輸出一次訓練交叉熵(逐漸減小)。

最後訓練結束,輸出網路權值。

執行結果如下:

最開始輸出初始化權值,然後輸出迭代資訊,最後輸出訓練後的權值。

神經網路的簡單實現

在吳恩達的機器學習教程中,講解了同或邏輯運算的神經網路實現原理,我將其用python語言實現一下。異或即相同取1,不同取0,真值表如下 x1x2 x1 xnor x200 1100 0101 11同或運算的神經網路包括三層 輸入層 隱藏層 輸出層。首先需要實現以下三個部分 1 x1 and x2 與...

TensorFlow 實現簡單神經網路

該神經網路有x1,x2兩個輸入 隱藏層有3個神經元 所以w1為2 3矩陣 輸出只有乙個y 所以w2為3 1 矩陣 import tensorflow as tf import os os.environ tf cpp min log level 2 import numpy as np batch ...

神經網路 python實現神經網路

神經網路系列目錄 神經網路 神經網路原理介紹 bp演算法 神經網路 sklearn引數介紹及應用 神經網路實戰 主播綜合評分回歸 實戰 最小二乘法 梯度下降法區別及python實現 本篇博文通過python 實現神經網路,採用sklearn自帶的手寫數字集,看分類情況如何 一 匯入資料集並標準化 資...