《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 —2.1.3 定义模型

举报
华章计算机 发表于 2020/02/13 20:54:08 2020/02/13
【摘要】 本节书摘来自华章计算机《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 一书中第2章,第2.1.3节,作者是[印] 纳温·库马尔·马纳西(Navin Kumar Manaswi),刘毅冰 薛 明 译。

2.1.3 定义模型

在Keras中序列模型被定义成层的序列。你可以创建一个序列模型再添加层。你需要确保输入层有正确的输入数。假设你有3072个输入变量,然后你要创建的第一个隐层具有512个节点/神经元。在第二个隐层,你有120个节点/神经元。最后,在输出层有10个节点。举例来说,一张图片映射到10个节点上,这10个节点分别对应该图为标签1(飞机)、标签2(汽车)、标签3(猫)......标签10(货车)的概率。具有最大概率的节点就是所预测的类或标签。

 image.png

一张图片包含三个通道(RGB),在每个通道中,图片都有32×32 = 1024个像素。因此,每张图片都有3×1024 = 3072个像素(特征/X/输入)。

利用这3072个特征,你需要预测它是标签1(数字0)、标签2(数字1)等的概率。这意味着模型预测10个输出(数字0~9),其中每个输出代表对应标签的概率。最后一个激活函数(之前介绍过的Sigmoid函数)在输出时给出9个0值和一个为1的输出。这个输出为1的节点的标签就是对于该图片的预测分类(图2-1)。

 image.png

图2-1 定义模型

其网络结构好比如此:3072个特征→512个节点→120个节点→10个节点。

下一个问题就是,你怎么知道要用多少层和用什么类型呢?没有人知道准确的答案。对于评估度量最好的就是你自己决定最适合的层数、参数以及每一层的步骤。也可以用一些试探性的方法。最好的网络结构是通过一系列的试错过程来找到的。一般来讲,你需要一个足够大能够捕捉到你所研究问题的所有结构特征的网络。

在这个例子里面,你将使用一个具有三层的全连接网络结构。用一个名为Dense的类来定义全连接层。

这样,你初始化的网络权重值为从一个均匀分布生成的很小的随机数,这里是处于0~0.05之间的数,因为这是Keras中默认的均匀权重初始化值。另一个习惯使用的是从高斯分布抽样得到的随机数。你可以用0.5的默认阈值设定来进行硬分类。并可以通过逐层添加来将它们都拼接起来。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。