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

深度学习笔记12:卷积神经网络的Tensorflow实现

在上一讲中,我们学习了如何利用手动搭建卷积神经网络。但在实际的图像识别中,使用去手写 CNN 未免有些吃力不讨好。在 DNN 的学习中,我们也是在手动搭建之后利用去重新实现一遍,一来为了能够对神经网络的传播机制能够理解更加透彻,二来也是为了更加高效使用开源框架快速搭建起深度学习项目。本节就继续和大家一起学习如何利用搭建一个卷积神经网络。

我们继续以 NG 课题组提供的 sign 手势数据集为例,学习如何通过快速搭建起一个深度学习项目。数据集标签共有零到五总共 6 类标签,示例如下:

先对数据进行简单的预处理并查看训练集和测试集维度:

可见我们总共有 1080 张 64643 训练集图像,120 张 64643 的测试集图像,共有 6 类标签。下面我们开始搭建过程。

创建

首先需要为训练集预测变量和目标变量创建占位符变量,定义创建占位符变量函数:

参数初始化

然后需要对滤波器权值参数进行初始化:

执行卷积网络的前向传播过程

前向传播过程如下所示:

CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED

可见我们要搭建的是一个典型的 CNN 过程,经过两次的卷积-relu激活-最大池化,然后展开接上一个全连接层。利用搭建上述传播过程如下:

计算当前损失

在中计算损失函数非常简单,一行代码即可:

定义好上述过程之后,就可以封装整体的训练过程模型。可能你会问为什么没有反向传播,这里需要注意的是帮助我们自动封装好了反向传播过程,无需我们再次定义,在实际搭建过程中我们只需将前向传播的网络结构定义清楚即可。

封装模型

对训练集执行模型训练:

训练迭代过程如下:

我们在训练集上取得了 0.67 的准确率,在测试集上的预测准确率为 0.58 ,虽然效果并不显著,模型也有待深度调优,但我们已经学会了如何用快速搭建起一个深度学习系统了。

注:本深度学习笔记系作者学习 Andrew NG 的 deeplearningai 五门课程所记笔记,其中代码为每门课的课后assignments作业整理而成。

参考资料:

https://www.coursera.org/learn/machine-learning

https://www.deeplearning.ai/

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券