首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

卷积神经网络实战MNIST

导语

关于卷积神经网络理论的学习,可以看:

卷积神经网络

本节学习来源斯坦福大学cs20课程,有关本节源代码已同步只至github,欢迎大家star与转发,收藏!

直通车:

https://github.com/Light-City/Translating_documents

TensorFlow中的卷积

在TensorFlow中去做卷积,我们有很多内建的层可以使用。你可以输入2维数据做1维卷积,输入3维数据做2维卷积,输入4维数据做3维卷积,最常用的是2维卷积。

作一个有趣的练习:在上面GitHub中的kernes.py文件中看到一些著名的核的值,在07_run_kernels.py中看到它们的用法。

用CNN处理MNIST

在第三课中学习了逻辑回归处理MNIST,现在我们使用CNN来处理,看看结果如何!

将采用如下架构:两个步长为1的卷积层,每个卷积层后跟一个relu激活层与最大池化层Maxpool,最后跟两个全连接层。

1.卷积层

输入尺寸(W)

过滤器尺寸(F)

步长(S)

零填充(P)

在定义函数之前,让我们看一下获取输出大小的公式。当您具有上述输入值时,输出的大小如下所示:

在我们的MNIST模型中,输入为28x28,滤波器为5x5。并且步幅使用1和填充使用2。因此,输出的大小如下:

2.池化层

池化可减少要素图的维数,提取要素并缩短执行时间。

通常使用max-pooling或average-pooling。

由于在此模型中使用了max-pooling,因此我们定义了max-pooling函数,如下所示:

输入尺寸(W)

池化大小(K)

池化步长(S)

池化零填充(P)

在我们的模型中,输入是28x28,池大小是2x2,补长是2,零填充,所以我们将输出大小如下。

3.全连接层

4.组合调用

现在让我们通过组合我们创建的函数来创建整个模型。您可以使用我们按顺序创建的功能。

需要注意的一点是,当您在最后一次池化后转到fc层时,必须通过将一维向量的大小乘以原始数组的每个维度的长度来重新整形三维数组的一维数组。

最后,将dropout应用到fc层。

5.loss

6.评估

在训练时,需要评估每个epoch的准确率。

7.运行

7.1 数据shape变化

7.2 运行精度

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190206G0BYQ900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券