人工神经网络ANN程序的理解(python3.0)——单隐层MINST

这篇博客介绍了如何使用Python3.0实现单隐层人工神经网络(ANN)对MNIST数据集进行数字识别。内容包括MNIST数据集的说明、系统结构、权重矩阵大小、编码原理以及实际输出的解释。博主还提供了数据集获取链接和代码实现。
摘要由CSDN通过智能技术生成

参考博客https://blog.csdn.net/u014365862/article/details/53868414

1数据说明:MNIST包
数据为:28*28*1 单通道28*28的0~9的数字图片;
训练数据60000张;测试数据10000张;并且每张图片对应的label是图片中显示的数字
train-images-idx3-ubyte 训练数据图像 (60,000)
train-labels-idx1-ubyte 训练数据label
t10k-images-idx3-ubyte 测试数据图像 (10,000)
t10k-labels-idx1-ubyte 测试数据label
2图示说明系统结构
这里写图片描述

前向回馈 将输入数据映射到0—1之间:net =np.dot(w,x)+b out =sigmoid(net);
反向传输修正w,b ; 像线性回归一样,先将误差函数求出来,然后求导修正W,B使得不断逼近目标值。
3矩阵大小
输入层到隐藏层w1:40*784;b1:40*1 ; 隐藏层到输出层w2:10*40 ;b2:10*1

4为什么要如下编码呢
因为经过sigmoid函数非线性映射后函数值的范围为(0,1),则将0—9的数字也映射为0,1形式

理想情况下输出表示数字的方式

理想情况下输出的十个神经元表示0:

0 1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 0 0 0 0

理想情况下输出的十个神经元表示1:

0 1 2 3 4 5 6 7 8 9
0 1 0 0 0 0 0 0 0 0

理想情况下输出的十个神经元表示2:

0 1 2 3 4 5 6 7 8 9
0 0 1 0 0 0 0 0 0 0

实际情况以输出10个神经元中 数值最大的下标为表示数字值
实际情况下可能输出的十个神经元表示0:

0 1 2 3 4 5 6 7 8 9
0.98 0.01 0 .01 0 0 0 0 0 0 0

实际情况下可能输出的十个神经元表示1:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP神经网络(Back Propagation Neural Network),是一种常用的人工神经网络模型,用于解决分类和回归问题。MINST是一个常用的手写数字数据集,用于训练和测试分类模型。 在MATLAB中使用BP神经网络解决MINST问题,首先需要加载MINST数据集,并对数据进行预处理。通常,将像素值缩放到0到1之间,并将图像展平为一维向量。然后,将数据集划分为训练集和测试集。 接下来,在MATLAB中创建BP神经网络模型。网络结构包含输入层、隐藏层和输出层。隐藏层和输出层的神经元数量根据问题的复杂性而确定。使用MATLAB提供的相关函数,可以定义神经网络的层数、每层神经元的数量以及激活函数等。 然后,使用训练集对BP神经网络模型进行训练。在训练过程中,通过反向传播算法根据预测结果与实际结果的误差来不断调整模型的权重和偏置。具体来说,在MATLAB中,可以使用train函数来训练BP神经网络模型。 训练完成后,使用测试集对训练好的模型进行评估和预测。通过比较神经网络对测试集样本的预测结果与真实标签,可以计算模型的准确率、精确率、召回率等评价指标,以评估模型的性能。 最后,可以使用训练好的BP神经网络模型进行手写数字识别。将测试集中的手写数字图像输入到模型中,模型将输出一个表示数字的向量。根据向量中最大值所对应的索引,即可判断输入的手写数字是哪一个。 总之,通过MATLAB中的BP神经网络工具箱和MINST数据集,可以构建和训练一个用于手写数字识别的模型,并实现对手写数字的自动识别。这种方法在实际中具有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值