import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x): # 定義網路啟用函式
return 1/(1+math.exp(-x))
data_tr = pd.read_csv('3.3 data_tr.txt') # 訓練集樣本
data_te = pd.read_csv('3.3 data_te.txt') # 測試集樣本
n = len(data_tr)
yita = 0.1 # 自己設定學習率
out_in = np.array([0.0, 0, 0, 0, -1]) # 輸出層的輸入,即隱層的輸出
w_mid = np.zeros([3,4]) # 隱層神經元的權值&閾值
w_out = np.zeros([5]) # 輸出層神經元的權值&閾值
delta_w_out = np.zeros([5]) # 輸出層權值&閾值的修正量
delta_w_mid = np.zeros([3,4]) # 中間層權值&閾值的修正量
err =
#將測試集樣本放入訓練好的網路中去
def ceshi():
net_in = np.array([data_te.iloc[it, 0], data_te.iloc[it, 1], -1]) # 網路輸入
for i in range(4):
out_in[i] = sigmoid(sum(net_in * w_mid[:, i])) # 從輸入到隱層的傳輸過程
res = sigmoid(sum(out_in * w_out)) # 模型**值
return res
if __name__ == '__main__':
for it in range(len(data_te)):
print('第', it + 1, '個測試值:', ceshi(),"真實值",data_te.iloc[it,2])
執行結果:
**結果:
BP神經網路
基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...
BP神經網路
x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...
BP神經網路
bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...