簡單神經網路的構建

2022-07-20 16:39:08 字數 2031 閱讀 1341

參考文章:

# -*- 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)

def sigmoid(x):#啟用函式

return 1/(1+np.exp(-x))

定義啟用sigmoid啟用函式的定義:

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個步驟 定義 ...