强化学习神经网络学习-MNIST手写字符集识别

强化学习神经网络学习-MNIST手写字符集识别

现在仅仅停留在看懂代码以及卷积神经网络的学习过程,这是新手菜鸟学习笔记,主要参考的是,matlab代码过程(一次写不完 慢慢更新)

MNIST手写字符集的提取

识别的手写字符集为MNIST字符集,我们首先需要将所有的手写字符集提取。提取过程中需要注意的是,手写字符集的前16字节为其控制信息,分别为4字节的幻数,4字节的图像数,4字节的行数以及4个字节的列数。读取手写字符集时,先读取其不同的控制号

magic = fread(fp, 1, 'int32', 0, 'ieee-be'); %读幻数
numImages = fread(fp, 1, 'int32', 0, 'ieee-be'); %读图像数
numRows = fread(fp, 1, 'int32', 0, 'ieee-be'); %读行号
numCols = fread(fp, 1, 'int32', 0, 'ieee-be'); %读列号

读取完控制号可以进行后续的图像向量的读取(列向量形式)并将读取结果首先存储为三维向量的形式(图像数x行x列,10000x28x28),而后通过压缩将其压缩成为二维向量图像数x行列,100000x784),存储后其行号代表图像号,列号即为图像数据,可通过reshape函数还原成为2828的形式。
同理,对于手写字符集的标签的读取与上述相同,标签只包含4个控制字节,并且可以直接存储为一个单独向量,与图像读入的格式相同

图像数据预处理

Step1 Gabor滤波

在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。在空间域中,一个二维Gabor滤波器是一个由正弦平面波调制的高斯核函数。对于图像Gabor滤波,首先设置滤波器的数量,在图像处理中滤波器的数量需要根据图像的特征得到。为了得到图像不同的滤波特点,需要对gabor滤波器设置不同的方向并且设置不同的滤波尺度。滤波方向就是gabor滤波公式中的θ角度设置(代码中采用了16个滤波角度),滤波尺度就是用来当作卷积核的滤波器的尺寸大小(代码中采用了11个滤波尺寸,分别为7,9,11,13,15…27,小于图像尺寸的28),并且确定在gabor滤波中所需要的波长,带宽,相位偏移(代码中动态改变,增加滤波器多样性)。滤波器尺度就是当前矩阵大小,对于其尺度中的每一个元素,均以下标带入公式计算:

y= exp( -(  (x*cos(theta)+y*sin(theta))^2  +  gamma^2*(-x*sin(theta)+y*cos(theta))^2  ) / (2*sigma^2) )...
    *cos( (2*pi/lambda) * (x*cos(theta)+y*sin(theta)) );

对于每一个滤波器完成计算后,按照矩阵的形式存储在cell数据结构中,行号表示该滤波器尺寸,列号表示该滤波器对应的角度

Step2 卷积

将构造的滤波器作为卷积核与每一张图像进行卷积,由于图像按照一维向量压缩存储,用reshape函数将图像还原成矩阵形式,使用conv2函数对图像按照不同的卷积核进行卷积,conv2函数卷积过程如下
将卷积核旋转180°,用旋转后的卷积核函数中心对准每一个图像数字,进行卷积操作(缺失数据的进行补0),并根据输入第三参数判断返回矩阵的规格。
上述卷积操作在卷积层中发生(L1层),并在卷积完成后返回一个四维特征向量L1[特征行号,特征列号,滤波器尺寸,滤波器方向],即为卷积后的平面图像特征。

Step3 池化

池化层减少卷积层的特征参数的维度和数量,采用最大池化,即缩小卷积层的特征数量(代码中以8为步长进行缩减),而后将每个图像的四维特征矩阵压缩成一维向量按序存储

强化学习(Reinforcment Learning)迭代策略

更新中~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于神经网络手写字符识别MNIST是一个经典的机器学习问题,旨在通过训练一个神经网络模型来识别手写数字图像。MNIST数据集包含了60000张28x28像素的训练图像和10000张测试图像,每个图像都标有对应的数字(0到9)。 神经网络模型通常由多个神经元构成的多层结构组成。每个神经元将输入与其自身的权重相乘,并通过激活函数输出结果。在MNIST任务中,输入层接收一个28x28的图像矩阵,并将其展平为一个784个像素的向量。随后的隐藏层通常由多个层级组成,最后输出层包含10个神经元,代表数字0到9的类别。 模型的训练过程通过反向传播算法来自动调整权重以最小化损失函数。常用的优化算法如梯度下降法可以帮助模型在训练中不断调整权重,提高准确性。训练时,模型将训练图像输入网络,输出一个概率向量,表示每个数字的可能性。最后,我们选择概率最高的数字作为预测结果。 对于测试图像,我们将其输入已经训练好的模型中,通过前向传播得到预测结果。通过将预测结果与实际标签进行比较,可以评估模型的性能。常用的评估指标包括准确率和混淆矩阵等。 在实际应用中,基于神经网络手写字符识别MNIST已经取得了很高的准确率。并且该问题也可以作为入门级别的机器学习任务,帮助初学者理解神经网络的基本原理和训练过程。 ### 回答2: 基于神经网络手写字符识别MNIST(Modified National Institute of Standards and Technology) 是一个经典的问题,旨在通过训练模型来正确识别手写数字图像。 MNIST数据集包含60,000个用于训练的手写数字图像和10,000个用于测试的手写数字图像,每个图像的大小为28x28像素。神经网络是一种模拟人脑的计算模型,通过模拟大量的神经元之间的连接以及它们之间的传递和处理信息的方式,来实现学习和推理能力。 在手写字符识别MNIST问题中,神经网络的输入层对应于图像的像素值,通常使用784个输入神经元(28x28)来表示一个图像。然后,神经网络通过多个隐藏层来对图像进行特征提取和抽象化。每个隐藏层都由多个神经元组成,每个神经元将前一层的输出与一个权重向量进行线性组合,并通过使用激活函数对结果进行非线性变换。 常见的激活函数有ReLU、Sigmoid和Tanh函数等。通过反向传播算法,神经网络可以通过调整权重和偏置来最小化训练数据与实际值之间的差异,从而实现对手写字符的准确识别。 一旦神经网络完成了训练,我们就可以使用测试集进行性能评估。我们将测试集中的每个图像输入神经网络,并根据输出层中神经元的激活程度来判断图像代表的数字。我们可以根据预测结果与实际标签之间的差异来评估模型的准确性。 基于神经网络手写字符识别MNIST是一个经典的机器学习问题,它不仅可以帮助我们理解神经网络的工作原理,还可以作为一个起点来研究更复杂的问题,如自然语言处理、图像识别等。 ### 回答3: 基于神经网络手写字符识别是一种广泛应用的机器学习技术,尤其在MNIST数据集上。MNIST是一个包含手写数字图片的数据集,其中每个图片都是28x28像素的灰度图片,并对应一个0到9的标签。 神经网络是由多个神经元组成的网络结构,由于其能够自动学习特征,并且适用于处理高维数据,因此被广泛应用于手写字符识别。基于神经网络手写字符识别MNIST通常包含以下步骤: 1. 数据准备:首先,需要从MNIST数据集中获取训练集和测试集。我们将训练集作为神经网络的输入数据,并使用测试集评估网络的性能。 2. 网络架构设计:选择合适的网络架构是非常重要的。常见的神经网络架构包括卷积神经网络(CNN)和全连接神经网络(FCN)。对于MNIST手写字符识别,常用的网络结构包括LeNet-5和AlexNet等。 3. 网络训练:通过将训练集的图片输入网络,网络会自动学习输入图片的特征和对应的标签。在训练过程中,使用反向传播算法来更新网络中的权重和偏差,以最小化预测值和真实标签之间的差异。 4. 网络评估:训练完成后,使用测试集评估网络的性能。通常使用准确率(Accuracy)来衡量网络的性能,即正确预测的样本数占总样本数的比例。 基于神经网络手写字符识别MNIST具有较高的准确率和鲁棒性,已经在现实生活中得到广泛应用。随着深度学习的快速发展,也出现了更加复杂和高效的网络结构,进一步提升了手写字符识别的准确率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值