神经网络-文本识别
来源:互联网 发布:淘宝寄修手机靠谱吗 编辑:程序博客网 时间:2024/06/06 07:35
1. 数据集说明
本次所用的数据集有 5000 个样本,每个样本对应于 20x20 大小的灰度图像。对应 9-0 共十个数字的手写图像。样本中每个像素都用浮点数表示。在样本数据中,每幅图像都被展开为一个 400 维的向量,构成了样本数据矩阵中的一行。完整的训练数据是一个 5000x400 的矩阵,其每一行为一个样本。另外一个数据用来表示上述样本的标号,为 5000x1 的矩阵,数据中,对应于数字”0”的图像被标记为”10”,而数字”1”到”9”按照其自然顺序被分别标记为”1”到”9”。
下图展示了一些样本图像:
2. 后向传播算法(BP)
定义误差:
网络初始化:
- 根据输入输出序列(X,Y)确定:
- 网络输入层节点数 n(不考虑额外的偏置项为样本长度,如果考虑单元个数需要+1)
- 隐含层结点数 l
- 输出层节点数 m
- 初始化:
- 初始化输入层与隐藏层的之间的权值
wj,i,0<j≤l;0<i≤n ,可以组成矩阵W10 - 初始化隐藏层与输出层之间的权值
wk,j,0<k≤n;0<j≤l ,可以组成矩阵W21 - 给定学习速率
η - 给定神经元激励函数:
σ(y)=11+e−y (本文采用)或σ(y)=ey−e−yey+e−y=tanh(y)
- 初始化输入层与隐藏层的之间的权值
- 根据输入输出序列(X,Y)确定:
隐藏层输出计算:
随机选择一个样本 (x,y),计算隐含层输出 H:Hl×1=σ(W10xn×1) - 输出层输出计算:
根据隐藏层的输出 H,计算 BP 神经网络的预测输出 O:Om×1=W21Hl×1 - 误差计算:
根据网络的预测输出 O 和期望输出 y,计算网络的预测误差 eO:eO=ym×1−Om×1 - 对于网络的输出单元,计算它们的误差项:
δ(L)jδ(L)=∂en∂H(L)j=(yi−Oi)=(ym×1−Om×1)=eO - 对于网络的隐藏层单元,计算它们的误差项:
δ(l)jδ(l)=∑k=1d(l+1)((δ(l+1)k)∗(w(l+1)kj)∗(σ′(H(l)j)))=σ′(H(l)).∗(WT21δ(L))l×1 - 更新每个网络权重:
wjiW21W10=wji+Δwji=wji+ηδjxji=W21+ηδ(L)∗HT=W10+ηδ(l)∗xT
3. 后向传播算法-代码
% 取一个样本oneIn = inputn(:, n);oneOut = output_train(:, n);% 隐藏层输出 hOut = 1 ./ (1 + exp(- W10 * oneIn));% 输出层输出yOut = W21 * hOut;% 计算误差eOut = oneOut - yOut; % 计算输出层误差项 delta2delta2 = eOut;% 计算隐藏层误差项 delta1FI = hOut .* (1 - hOut);delta1 = (FI .* (W21' * eOut));% 更新权重W21 = W21 + eta * delta2 * hOut';W10 = W10 + eta * delta1 * oneIn';
4. 实验
从 5000 个样本中随机选择 4000 个进行训练,剩余的 1000个用于测试,采用不同的迭代次数,不同的学习速率参数,分别进行十次独立随机实验,识别的准确率如下所示:
从上可以看出:
1. 学习效率为
2. 并不是迭代次数越多多好,有些时候随着迭代次数的增加测试的精度反而下降
3.
5. 完整代码和数据:
我的GitHub
6. 参考
- 《机器学习》第四章-人工神经网络
- 神经网络推导
- 《MATLAB神经网络30个案例分析》第一个案例
0 0
- 神经网络-文本识别
- tensorflow1.1/构建卷积神经网络识别文本
- 基于神经网络的文本意图(intent)识别
- 构建多层感知器神经网络对数字图片进行文本识别
- 构建多层感知器神经网络对数字图片进行文本识别
- 神经网络识别车牌字符
- 神经网络识别车牌字符
- BP神经网络识别绝缘子
- 【opencv】神经网络识别数字
- 【opencv】神经网络识别美女
- 神经网络识别车牌字符
- 神经网络识别字母+数字
- 【opencv】神经网络识别数字
- 神经网络之路标识别
- 神经网络文本分类案例
- 神经网络:简单手写数字识别神经网络
- 文本识别资源汇总
- TensorFlow 文本识别
- Bestcoder 48-1002 / hdu5285 BFS
- SQL脚本积累之二-----SQL Server数据库日志删除脚本
- php实现双队列
- 在VMware下建立一个linux和Windows共享的文件夹
- 龙贝格算法
- 神经网络-文本识别
- HDU-2140 Michael Scofield's letter 水题
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第八讲:DIV+CSS中类选择器、id选择器和html选择器介绍
- LINUX中fork()函数详解
- 二值化
- 如何修改WAMP中mysql默认空密码&重新登录phpmyadmin
- CAS
- python题目2
- 收集的网址