import numpy as np
//定義乙個啟用函式
defsigmoid
(x,deriv=false):
if (deriv == true):
return x*(1-x)
return
1/(1+np.exp(-x))
//構造樣本
x = np.array([
[1,0,1,0,1,1],
[1,1,1,0,1,1],
[1,0,1,0,0,1],
[1,0,0,0,0,1],
[1,1,1,1,1,1],
[0,0,1,0,1,0],
[0,0,1,1,1,1]
])
//構造標籤
y = np.array([
[1],
[0],
[0],
[1],
[1],
[1],
[0]])
//設定乙個種子
np.random.seed(1)
//隨機化初始權重值,高斯初始化,或者隨機0-1初始化
w0 = 2*np.random.random((6,5))
w1 = 2*np.random.random((5,7))
w2 = 2*np.random.random((7,1))
//構造網路,這裡迭代6000次
for i in range(60000):
# 前向傳播
l0 = x
l1 = sigmoid(l0.dot(w0))
l2 = sigmoid(l1.dot(w1))
l3 = sigmoid(l2.dot(w2))
#計算錯誤
l3_error = l3 - y
if(i%10000 == 0): #每10000次列印出來乙個error
print("error: "+np.str(np.mean(np.abs(l3_error))))
#進行反向傳播
l3_delta = l3_error * sigmoid(l3,deriv = true)
l2_error = l3_delta.dot(w2.t)
l2_delta = l2_error * sigmoid(l2,deriv = true)
l1_error = l2_delta.dot(w1.t)
l1_delta = l1_error * sigmoid(l1,deriv = true)
l0_error = l1_delta.dot(w0.t)
l0_delta = l0_error * sigmoid(l0,deriv = true)
#更新梯度
w2 -= l2.t
.dot(l3_delta)
w1 -= l1.t
.dot(l2_delta)
w0 -= l0.t
.dot(l1_delta)
print(w2)
print(w1)
print(w0)
結果:
實現乙個最簡單的神經網路
這次實現乙個最簡單的神經網路,這個神經網路能判斷輸入的是奇數還是偶數通常咱們寫程式 就要寫成這樣了 if inputnumber 2 else 但是神經網路不是這樣的 首先來想一下,嬰兒時怎麼學習的。嬰兒要學習乙個東西,比如漢語 嬰兒在剛出生的時候是不會任何和漢語相關的知識的 是嬰兒在後來逐漸的學習...
乙個神經網路
機器學習三要素 資料 演算法 算力 1 機器學習,就是在任務 t 上,隨經驗 e 的增加,效果 p 隨之增加。2 機器學習的過程是通過大量資料的輸入,生成乙個模型,再利用這個生成的 模型,實現對結果的 3 龐大的神經網路是基於神經元結構的,是輸入乘以權重,再求和,再過非線 性函式的過程。檔案讀操作 ...
pytroch 動手搭建第乙個神經網路
我是用的是pytorch框架,python3.6,開發工具pycharm 這裡自己造假資料,實現回歸模型 一 造資料 import torch import numpy as np import matplotlib.pyplot as plt from torch.nn.functional as...