python实现abalone数据集分类_用卷积神经网络实现MNIST数据集分类

3e48784c501ffda432959339a4d755ef.png

在这节的内容中,我们用之前讲述的内容来搭建一个比较简单的卷积神经网络,实现MNIST手写数字体数据集的图片分类。
我们给出本次实验的CNN网络参数配置如下:
原始数据:输入为[28,28],输出为[1,10]
卷积核1:[5,5],32个特征 -->28*28*32
池化核1:[2,2],最大池化 -->14*14*32
卷积核2:[5,5],2个特征 -->14*14*64
池化核2:[2,2],最大池化 -->7*7*64
全连接1:[7*7*64,1024]
全连接2:[1024,10]
输出: [1,1,10]
首先我们载入MNIST数据集,设置批处理大小,one_hot指的是独热码的编码(encoding)形式,有关于独热编码大家可以自己搜索下相关内容。

a986454cf6fae4aebe27f8681d22d939.png

下面是定义初始卷积层函数和池化层函数,卷积层的输入是我们的图片大小,由于利用了填充,所以最后输出的还是原来的图片大小,28x28,只不过图片的通道数变大了,成了32,我们可以理解为图片的横截面变”厚”了;然后经过一层池化层的时候,图片大小成了14x14的;再经过第二次卷积层的时候,跟第一层的原理一样,图片的长宽不变,厚度增加,再经过第二次池化层的时候,图片的大小由[14,14,64]变为[7,7,64]大小。

30b4c5e73d04bac16b7558182698dd33.png

之后就是一层全连接层,全连接层相当于把一张图片直接给”拉长”成1x1x1024大小。

d5fe576d9bca7dca323466f9b17dac53.png

tf.layers.dropout()也就是之前提到过的dropoout,意思是每个元素被保留的概率,rate=1就是所有元素全部保留的意思,其目的是为了防止过拟合,就是对全连接层进行一个随机保留输出。

72aa5aaad8eeef1c3d309c9b3f19b30a.png

定义我们的损失函数,这里用到的是tf.reduce_mean()函数,这个函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的平均值,主要是用来降维或者计算tensor的平均值。括号中的tf.losses.softmax_cross_entropy()是用来计算交叉熵的函数,用Adam优化器来最小化误差,学习率设置为0.01然后用accuracy来计算最后的准确率,然后对所有变量进行初始化。

274484468169b7c04f8a40ae4491f3d3.png

接下来就是创建会话了,总共是5000步,每一次训练100步,总共是50个epoch,最后输出的结果如下图所示:

ca8e298a5c9b48e0bb88d688504fd14e.png

可以看到现在第5000步的训练已经有97%的精度了,且推测和生产的数字也是一样的。 总结:本次的内容主要是用卷积神经网络做手写数字体识别分类的实验,自己也可以动手做一做,这样可以加强对过程中每一个步骤的理解。关注小鲸融创,一起深度学习金融科技!

2c960cd4f1cfecd19a7115b68610b37b.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值