# 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
资源评论
天飓
- 粉丝: 474
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- USTC 并行程序设计实验
- 【Unity插件】Shiny SSR 2 - Screen Space Reflections
- C#高校宿舍管理系统源码数据库 SQL2008源码类型 WinForm
- 基于华为昇腾Atlas 200I DK A2+YOLOv5S研究的机械臂目标检测系统(源码)
- 课程实验-基于FPGA的8x8x8光立方+源码+文档说明(高分作品)
- 基于YOLO v11进行目标检测的项目,训练的数据集是AIRcraft,训练效果可以很好的识别合成孔径雷达(SAR)图像中飞机(整套源码)
- 韩智祥毕业设计.doc
- unity的学习方式和网站
- 城市大脑-淮南市“城市大脑”项目项目采购需求.pdf
- 通过代码写rtf(设置RTF头部信息、添加文本到RTF、添加结束标记)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功