import numpy
# S型激活函数引入
import scipy.special
# 矩阵运算
import matplotlib.pyplot
# import shelve
# 神经网络class定义
class neuralNetwork :
# 初始化
def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
# 初始化神经网络输入层,隐藏层,输出层节点
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
# 初始化输入层到隐藏层,隐藏层到输出层的权重
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
# S型激活函数
self.activation_function = lambda x : scipy.special.expit(x)
pass
# 训练函数
def train(self, input_list, targets_list):
# 转换成二维矩阵并转置
inputs = numpy.array(input_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 check(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
# 性能
def performance(hidden_nodes, learning_rate, epochs) :
# 设置各层节点
input_nodes = 784
# hidden_nodes = 200
output_nodes = 10
# 学习率
# learning_rate = 0.1
# 创建神经网络模型
n = neuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
# 读取训练数据
training_data_file = open("C:/Users/DELL/Desktop/Python神经网络/mnist_train.csv", 'r')
train_data_list = training_data_file.readlines()
training_data_file.close()
# 迭代5次
# epochs = 5
# 训练模型
for e in range(epochs):
# 循环读取记录
for record in train_data_list:
# 解析数据
all_values = record.split(',')
# 归一化处理(标准化处理)
inputs = (numpy.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01
targets = numpy.zeros(output_nodes) + 0.01
targets[int(all_values[0])] = 0.99
n.train(inputs, targets)
pass
pass
# 读取测试数据
test_data_file = open("C:/Users/DELL/Desktop/Python神经网络/mnist_test.csv", 'r')
test_data_list = test_data_file.readlines()
test_data_file.close()
# 测试结果数据
scorecard = []
# 测试模型
for record in test_data_list:
# 解析数据
all_values = record.split(',')
# 正确结果
correct_label = int(all_values[0])
# 输入数据
inputs = (numpy.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01
# 输出数据
outputs = n.check(inputs)
# 取输出节点中的最大值
label = numpy.argmax(outputs)
if (label == correct_label):
scorecard.append(1)
else:
scorecard.append(0)
pass
pass
scorecard_array = numpy.asarray(scorecard)
return scorecard_array.sum() / scorecard_array.size
# print("正确率:", scorecard_array.sum() / scorecard_array.size)
# db = shelve.open("C:/Users/DELL/Desktop/Python神经网络/compare/200-")
# db['wih'] = n.wih
# db['who'] = n.who
# db.close( )
没有合适的资源?快使用搜索试试~ 我知道了~
基于BP算法实现的神经网络项目源码+项目说明.zip
共6个文件
py:3个
dir:1个
dat:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 14 浏览量
2024-02-19
10:58:18
上传
评论
收藏 1.16MB ZIP 举报
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip 基于BP算法实现的神经网络项目源码+项目说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于BP算法实现的神经网络项目源码+项目说明.zip (6个子文件)
code_20105
net_data
network.bak 44B
network.dir 44B
network.dat 1.21MB
BPNetDemo
BPNetDemo.py 5KB
NumPngToData.py 1KB
PerformanceChart.py 2KB
共 6 条
- 1
资源评论
土豆片片
- 粉丝: 1518
- 资源: 5643
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功