import numpy as np
import pandas as pd
from keras.datasets import mnist
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def top(x,y,o):
z=x.dot(o)
h=sigmoid(z)
j=np.sum(y*np.log(h)+(1-y)*np.log(1-h))
return x,y,h,o,j # h 為**,j 為代價函式
def bottom(x,y,h,o,j):
s=h-y
o=o-(1/x.shape[0])*(x.t).dot(s)
return o # o 為修正後的引數
def begin(x,y):
o=np.zeros((x.shape[1], y.shape[1]))
return x,y,o
# 資料準備
# x =
# x1
# x2
# x3
## y =
# y1
# y2
# y3
(train_data, train_labels), (test_data, test_labels) = mnist.load_data()
x=train_data.reshape(60000,784)
y=np.zeros((60000,10))
for i in range(train_labels.shape[0]):
y[i,train_labels[i]]=1
# 呼叫網路,該網路只有輸入輸出層
b=begin(x,y)
t=top(b[0],b[1],b[2])
o=bottom(t[0],t[1],t[2],t[3],t[4])
for i in range(9):
t = top(x, y, o)
o=bottom(t[0],t[1],t[2],t[3],t[4])
print(o) # 在控制台顯示
# 寫入到csv檔案,追加的形式
pd.dataframe(o).to_csv('d:\pycharm_test\\bp\\test.csv', header=false,index=none)
import pandas as pd
import numpy as np
from keras.datasets import mnist
(train_data, train_labels), (test_data, test_labels) = mnist.load_data()
o=np.array(pd.read_csv('d:\pycharm_test\\bp\\test.csv',header=none))
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# print(test_data.shape)
x=test_data.reshape(10000,784)
for i in range(x.shape[0]):
y=sigmoid(x[i].dot(o))
print(test_labels[i])
print(x[i].dot(o))
print(y)
pd.dataframe(y).to_csv('d:\pycharm_test\\bp\\testy.csv', mode='a+',header=false,index=none)
精確度不高,兩層網路,比較簡易,且省去了θ0. 神經網路 python實現神經網路
神經網路系列目錄 神經網路 神經網路原理介紹 bp演算法 神經網路 sklearn引數介紹及應用 神經網路實戰 主播綜合評分回歸 實戰 最小二乘法 梯度下降法區別及python實現 本篇博文通過python 實現神經網路,採用sklearn自帶的手寫數字集,看分類情況如何 一 匯入資料集並標準化 資...
Python與神經網路0 神經網路介紹
參考 提到神經網路演算法,其實就是人工神經網路演算法neural networks ann 是一種模仿生物大腦神經的工作原理的演算法。神經網路的基本單位是神經元,生物的神經元包含三部分 體細胞 軸突和樹突。樹突成樹狀,用於從接受訊號,軸突用於輸出訊號。抽象成演算法模型就是 在具體執行時,每個輸入變數...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...