# Python:3层神经网络
# 初始代码源于:《Python神经网络编程》一书
# @Author: Hyde Kong
# -*- coding: UTF-8 -*-
import numpy
import scipy.special
# 神经网络类定义
class NeuralNetwork:
# 初始化神经网络
def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
# 设置每次输入层、隐藏层、输出层的节点数字
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
# 链接权重矩阵
# 矩阵内的权重设置为w_i_j,意思是从节点i链接到下一层节点j
# w11 w21
# w21 w22等
# 用下一层的节点数的开发作为标准方差来初始化权重
self.wih = numpy.random.normal(0.0, pow(self.hnodes, -0.5), (self.hnodes, self.inodes))
self.who = numpy.random.normal(0.0, pow(self.onodes, -0.5), (self.onodes, self.hnodes))
# 学习率
self.lr = learningrate
# 激活sgmoid抑制函数
self.activation_function = lambda x: scipy.special.expit(x)
pass
# 训练神经网络
def train(self,inputs_list,targets_list):
# 矩阵转置
inputs = numpy.array(inputs_list, ndmin=2).T
targets = numpy.array(targets_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)
# 输出层误差=目标值-实际值
output_errors=targets-final_outputs
# 隐藏层误差=根据所连接的权重分割误差,为每个隐藏层节点重组这些误差
hidden_errors=numpy.dot(self.who.T, output_errors)
# 更新隐藏层和最终层之间的权重
self.who += self.lr * numpy.dot((output_errors*final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))
# 更新输入层和隐藏层之间的权重
self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs))
pass
# 查询神经网络
def query(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 final_outputs
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
neural_network.rar (14个子文件)
neural_network.py 3KB
image
3.png 1KB
t2.png 970B
0.png 1KB
t4.png 964B
t3.png 925B
1.png 1KB
t5.png 787B
t1.png 646B
4.png 2KB
2.png 1KB
identify_ol.py 1KB
model
wih.pkl 1.15MB
who.pkl 15KB
共 14 条
- 1
资源评论
天飓
- 粉丝: 436
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功