深度学习笔记8:利用Tensorflow搭建神经网络

在笔记7中,笔者和大家一起入门了的基本语法,并举了一些实际的例子进行了说明,终于告别了使用手动搭建的日子。所以我们将继续往下走,看看如何利用搭建神经网络模型。

尽管对于初学者而言使用看起来并不那么习惯,需要各种步骤,但简单来说,搭建模型实际就是两个过程:创建计算图和执行计算图。在 deeplearningai 课程中,NG和他的课程组给我们提供了(手势)数据集,其中训练集包括1080张64x64像素的手势图片,并给定了 6 种标注,测试集包括120张64x64的手势图片,我们需要对训练集构建神经网络模型然后对测试集给出预测。

先来简单看一下数据集:

下面就根据 NG 给定的找个数据集利用搭建神经网络模型。我们选择构建一个包含 2 个隐层的神经网络,网络结构大致如下:

LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SOFTMAX

正如我们之前利用手动搭建一样,搭建一个神经网络的主要步骤如下:

-定义网络结构

-初始化模型参数

-执行前向计算/计算当前损失/执行反向传播/权值更新

创建 placeholder

根据的语法,我们首先创建输入和输出的占位符变量,这里需要注意参数的设置。

初始化模型参数

其次就是初始化神经网络的模型参数,三层网络包括六个参数,这里我们采用初始化方法:

执行前向传播

计算损失函数

在中损失函数的计算要比手动搭建时方便很多,一行代码即可搞定:

代码整合:执行反向传播和权值更新

跟计算损失函数类似,中执行反向传播的梯度优化非常简便,两行代码即可搞定,定义完整的神经网络模型如下:

执行模型:

根据模型的训练误差和测试误差可以看到:模型整体效果虽然没有达到最佳,但基本也能达到预测效果。

总结

语法中两个基本的对象类是 Tensor 和 Operator.

执行计算的基本步骤为

创建计算图(张量、变量和占位符变量等)

创建会话

初始化会话

在计算图中执行会话

可以看到的是,在 Tensorflow 中编写神经网络要比我们手动搭建要方便的多,这也正是深度学习框架存在的意义之一。功能强大的深度学习框架能够帮助我们快速的搭建起复杂的神经网络模型,在经历了手动搭建神经网络的思维训练过程之后,这对于我们来说就不再困难了。

参考资料:

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

https://www.deeplearning.ai/

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

扫码关注云+社区

领取腾讯云代金券