參考文章:
# -*- coding: utf-8 -*-
import numpy as np
def sigmoid(x):#啟用函式
return 1/(1+np.exp(-x))
input1 = np.array([[0.35],[0.9],[0.58],[0.78]]) #輸入資料 4x1
w1 = np.random.rand(3,4)#第一層權重引數 3x4
w2 = np.random.rand(2,3)#第二層權重引數 2x3
real = np.array([[0.5],[0.7]])#標籤
for s in range(100):
output1 = sigmoid(np.dot(w1,input1))#第一層輸出 3x1
output2 = sigmoid(np.dot(w2,output1))#第二層輸出,也即是最終輸出 2x1
cost = np.square(real-output2)/2#誤差 2x1
delta2=output2*(1-output2)*(real-output2) #2x1
delta1=output1*(1-output1)*w2.t.dot(delta2) #3x1
w2 = w2 + delta2.dot(output1.t) #2x3
w1 = w1 + delta1.dot(input1.t) #3x4
print(output1)
print(output2)
print(cost)
定義啟用sigmoid啟用函式的定義:def sigmoid(x):#啟用函式
return 1/(1+np.exp(-x))
第一層輸出和第二層輸出output1 = sigmoid(np.dot(w1,input1))#第一層輸出 3x1
output2 = sigmoid(np.dot(w2,output1))#第二層輸出,也即是最終輸出 2x1
第一層輸出的計算方式是:
樣本資料 左乘 權重
$\vec=f(w\centerdot\vec)\qquad $
第二層類似,只不過替換為第一層的輸出左乘權重
cost = np.square(real-output2)/2#誤差 2x1
計算誤差:$e=\frac(y-\bar)^2$
誤差主要是用來衡量模型效果的
計算誤差項:delta2=output2*(1-output2)*(real-output2) #2x1
delta1=output1*(1-output1)*w2.t.dot(delta2) #3x1
誤差項 主要是用來更新權重使用的
最後,更新每個連線上的權值:w2 = w2 + delta2.dot(output1.t) #2x3
w1 = w1 + delta1.dot(input1.t) #3x4
$w_\gets w_+\eta\delta_jx_\qquad$
其中,$w_$是節點$i$到節點$j$的權重,$\eta$是乙個成為學習速率的常數,$\delta_i$是節點$i$的誤差項,$x_$是節點$i$傳遞給節點$j$的輸入。例如,$w_$權重的更新方法如下:
$w_\gets w_+\eta\delta_8 a_4$
利用pytorch構建簡單神經網路
省略了資料集的處理過程 轉為tensor x torch.tensor input features,dtype float y torch.tensor labels,dtype float 權重引數初始化,設計網路結構 輸入348 14 weights torch.randn 14 128 dt...
Pytorch入門操作 構建簡單的神經網路
讀研伊始,簡單了解了一下pytorch構建神經網路的方法,特記錄。1 利用pytorch實現神經網路時,要注意 numpy和tensor的互化 資料型別的轉化,包括numpy的int32 float64等,注意numpy中astype 的用法。注意conv接收的資料為4維 batch,channel...
Keras 神經網路構建學習
keras 是簡單易用 高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到 keras 模型構建的主要步驟 keras 神經網路搭建的一般過程 keras 模型構建主要包括5個步驟 定義 ...