三層神經網路python 簡單的三層神經網路

2021-10-11 04:50:25 字數 2629 閱讀 8877

參照《python神經網路程式設計》寫乙個簡單的三層神經網路

#!/usr/bin/env python

# coding: utf-8

import numpy

# sigmoid  函式

import scipy.special

簡單的三層全連線網路,包括乙個輸入層,乙個隱層和乙個輸出層

損失函式用sigmoid

class neuralnetwork:

# 初始化方法

def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):

# set number of nodes in each input, hidden, output layer

#輸入層節點數

self.inodes = inputnodes

#隱層節點數

self.hnodes = hiddennodes

#輸出層節點數

self.onodes = outputnodes

#輸入層和隱層的權重

self.wih = numpy.random.normal(0.0, pow(self.inodes, -0.5), (self.hnodes, self.inodes))

#隱層和輸出層的權重

self.who = numpy.random.normal(0.0, pow(self.hnodes, -0.5), (self.onodes, self.hnodes))

# 學習率

self.lr = learningrate

# 損失函式用sigmoid

self.activation_function = lambda x: scipy.special.expit(x)

pass

# 前饋網路

def feedforward(self, inputs_list):

inputs = numpy.array(inputs_list, ndmin=2).t

# 點乘計算-輸入層到隱層的權重 點乘 輸入層輸入 等於隱層輸入

hidden_inputs = numpy.dot(self.wih, inputs)

#在隱層應用損失函式

hidden_outputs = self.activation_function(hidden_inputs)

# 點乘計算-隱層到輸出層的權重 點乘 隱層輸入 等於隱層輸出

final_inputs = numpy.dot(self.who, hidden_outputs)

#在輸出層應用損失函式

final_outputs = self.activation_function(final_inputs)

return hidden_outputs,final_outputs

# in[ ]:

# 訓練神經網路

def train(self, inputs_list, targets_list):

#先正向進行前饋網路

hidden_outputs,final_outputs = self.feedforward(self, inputs_list)

inputs = numpy.array(inputs_list, ndmin=2).t

targets = numpy.array(targets_list, ndmin=2).t

#計算最終誤差(目標值-實際值)

output_errors = targets - final_outputs

#更新隱層和輸出層的權重

self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))

# 隱藏層誤差 = 輸出層誤差點乘 隱層到輸出層的權重

hidden_errors = numpy.dot(self.who.t, output_errors)

#更新輸入層和隱層間的權重

self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs))

pass

# **方法,**方法很簡單,直接進行前饋網路

def fit(self, inputs_list):

hidden_outputs,final_outputs = self.feedforward(inputs_list)

return final_outputs

#測試方法

input_nodes = 3

hidden_nodes = 3

output_nodes = 3

learning_rate = 0.3

n = neuralnetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)

inputs_list = [1.0, 0.5, -1.5]

final_outputs = n.fit(inputs_list)

print(final_outputs)

三層神經網路

import numpy as np defsigmoid x,deriv false if deriv true return x 1 x x是經過啟用函式後的 return1 1 np.exp x 前向傳播的值x np.array 0,0,1 0,1,1 1,0,1 1,1,1 0,0,1 標籤...

最簡單的三層神經網路Matlab實現

人工神經網路 artificial neural n etwork,ann 1 具有很廣的應用。理論上來說,採用多層的神經網路能夠逼近任何的連續函式,而不管該函式是否平滑。自從svm出現後,大家都快忘了還有ann這種東東。但是近幾年隨著deep learning技術的興起,大牛們又重新開始關注神經網...

從0實現三層神經網路

分享李沐老師關於深度學習的觀點 1 從實踐的角度入手深度學習可能比單純的研究演算法更好 2 如果想學習深度學習,要只用簡單的資料結構,譬如numpy ndarray,從0實現乙個深度學習演算法,這樣才能碰到進而解決深度學習中的許多核心問題,也可以更好的理解現在流行的框架 3 從應用的角度,那就直接上...