Python实现神经网络算法及应用的具体代码

  介绍

这篇文章将为大家详细讲解有关Python实现神经网络算法及应用的具体代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Python实现神经网络算法及应用的具体代码如下

首先用Python实现简单地神经网络算法:

import  numpy  as  np         #,定义双曲正切函数   def 双曲正切(x):   return 才能np.tanh (x)         #,双曲正切函数的导数   def  tan_deriv (x):   return  1.0,才能成功;np.tanh (x), *, np.tan (x)         #,乙状结肠函数   def 物流(x):   return 才能;1,/,(1,+,np.exp (- x))         #,乙状结肠函数的导数   def  logistic_derivative (x):   return 才能;物流(x), *,(1,安康;物流(x))         class  NeuralNetwork:   def 才能;__init__(自我,,,,激活=& # 39;双曲正切# 39;):   ,,,,,,   ,,,神经网络算法构造函数   ,,,:param 层:,神经元层数   ,,,:param 激活:,使用的函数(默认双曲正切函数)   ,,:返回:没有   ,,,,,,   ,,,if  activation ==, & # 39;物流# 39;:   ,,,,,self.activation =物流   ,,,,,self.activation_deriv =logistic_derivative   ,,,elif  activation ==, & # 39;双曲正切# 39;:   ,,,,,self.activation =,双曲正切   ,,,,,self.activation_deriv =tan_deriv      ,,,#,权重列表   ,,,self.weights =, []   ,,,#,初始化权重(随机)   ,,,for 小姐:拷贝范围(1,len(层),安康;1):   ,,,,,self.weights.append ((2, *, np.random.random((层[小姐,安康;1],+,1,层[我],+,- 1)),安康;1),*,0.25)   ,,,,,self.weights.append ((2, *, np.random.random((层[我],+,1,层(小姐:+,- 1))),安康;1),*,0.25)      def 才能;适合(自我,,X,, y,, learning_rate=0.2,,时代=10000):   ,,,,,,   ,,,训练神经网络   ,,,:param  X:,数据集(通常是二维)   ,,,:param  y:,分类标记   ,,,:param  learning_rate:,学习率(默认0.2)   ,,,:param 时代:,训练次数(最大循环次数,默认10000)   ,,,:返回:没有   ,,,,,,   ,,,#,确保数据集是二维的   ,,,X =, np.atleast_2d (X)      ,,,temp =, np.ones ([X.shape [0],, X.shape [1], +, 1])   ,,,临时(:,,0:,1],=,X   ,,,X =temp   ,,,y =, np.array (y)      ,,,for  k 拷贝范围(时代):   ,,,,,#,随机抽取X的一行   ,,,,,小姐:=,np.random.randint (X.shape [0])   ,,,,,#,用随机抽取的这一组数据对神经网络更新   ,,,,,a =, [X[我]]   ,,,,,#,正向更新   ,,,,,for  l 拷贝范围(len (self.weights)):   ,,,,,,,a.append (self.activation (np.dot ([l],, self.weights [l])))   ,,,,,error =, y[我],安康;[1]   ,,,,,deltas =, (error  *, self.activation_deriv ([1]))      ,,,,,#,反向更新   ,,,,,for  l 拷贝范围(len (a),安康;2,,0,1):   ,,,,,,,deltas.append(三角洲[1]. dot (self.weights [l] .T), *, self.activation_deriv ([l]))   ,,,,,,,deltas.reverse ()   ,,,,,for 小姐:拷贝范围(len (self.weights)):   ,,,,,,,layer =, np.atleast_2d([我])   ,,,,,,,delta =, np.atleast_2d(三角洲[我])   ,,,,,,,self.weights[我],+=,learning_rate  *, layer.T.dot(δ)      def 才能预测(自我,,x):   ,,,x =, np.array (x)   ,,,temp =, np.ones (x.shape [0], +, - 1)   ,,,临时[0,1],=,x   ,,,a =temp   ,,,for  l 拷贝范围(0,,len (self.weights)):   ,,,,,a =, self.activation (np.dot (a, self.weights [l]))   ,,,return 一个

使用自己定义的神经网络算法实现一些简单的功能:

,小案例:

X:,,,,,,,,,,,,,,,,,null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python实现神经网络算法及应用的具体代码