TensorFlow 建立网络模型

TensorFlow 建立网络模型

上次一我们在fashion-mnist上面体验了一把,但是里面有一些建立模型和一些TensorFlow的基础概念都没有给大家讲,所以这节决定将这方面的知识介绍一些,上节是为了引起大家的注意,TensorFlow具有很强大的功能,我们只能后续慢慢的学习。

1.其实在上一次的实例中,有很多地方确实是很困惑的,如果没有接触过机器学习的小伙伴可能理解起来会有一些问题,那么我开头就稍微讲一下,机器学习有一些什么?就我现在了解的一些内容给大家介绍,有可能有一些不到位的地方,还请多多包涵:

其实机器学习,总的宗旨就是利用数据的特征来做识别和分类等任务

第一大类是分类工作,假设有一百类,经典的做法,就是使用神经网络提取一些数据的特征,然后利用softmax输出层进行不同种类概率的预测:

上面是softmax层计算的公式,从一百类里面找出每一类的概率值,然后按照概率值来预测输入数据是哪一种类型,就像上一次文章里面的fashion-mnist的数据一样,会预测出输出的类别。softmax(i)代表的就是这个种类的概率值,取最大值作为预测类别。

你可以把一个矩阵看成一个数据集合,一行是一个数据信息,就和我们的关系型数据一样,一行代表一个表的一条信息,那么每列就是每一行数据的一个属性,那么在机器学习里面就是数据的特征了,因为在网络模型中,每个特征都有对应的权重,那么,对于每个特征来说,对于最后的分类,识别等工作起的重要程度是不一样的。这也和我们的数据库信息差不多,有一些信息也是无关紧要的。有些信息可以主要决定这一行数据。

第二大类就是回归,回归可以看作是一个连续的分类,对于二维数据来说,其实就是根据你给出的数据来拟合一条线。对于三维来讲就是拟合一个平面。再高维就是超平面。

2.最近,也就是2018年3月31在加利福尼亚州山景城的计算机历史博物馆举办了第二届TensorFlow开发者峰会,会上有超过500名使用TensorFlow的用户,还有一些观众,大家有兴趣的话可以关注youtube的TensorFlow官方频道。可以查看开会的视频。

TensorFlow应用广泛,其中有使用TensorFlow来做开普勒任务分析的

也有使用TensorFlow预测心脏发作和中风概率

还有一些应用在现实当中的项目。

这让我们认识到TensorFlow对于实际领域中应用的越来越广泛,所以我们不学习是不是有点亏。这么好的开源项目。

3.上一次我们既然做过了一次服装类别识别,那么这次我主要从TensorFlow建立模型的步骤讲起:让大家再深入理解一下TensorFlow。

第一步也是很重要的一步,那就是导入数据。

第二步一般就是对数据进行的预处理,一般包括归一化数据,转换数据等操作。

第三步设置算法的超参数,一般也就是学习率,batchsize(批处理个数),epoch(轮次)。这里举一个例子,假如你有10000条训练数据。那么,batchsize设置为100,那么你的一个epoch就迭代100次才能将所有数据训练一遍,每次输入数据是100条,因为一个epoch的意思就是训练完一次训练数据,所以一个epoch是迭代100次就可以结束一轮了。learningrate一般设置为0.1-0.0001之间,但是也不排除一些特殊情况,主要是learningrate设置的过小,反向传播更新参数的时候速度会很慢,设置的过大,会出现无法收敛的情况。

第四步设置变量和placeholders,变量是记录权重和偏置项信息的,一般在最小化loss函数的时候,反向传播算法会更新权重和偏置项,TensorFlow导入数据是通过placeholders来实现的,大家还记得我们上次的fashion-mnist识别,我的数据就是通过先定义placeholders,最后在Session运行的时候,在feed_dict这个字典参数里面将训练数据喂进去的。

第五步定义图模型,我们有了数据,初始化了变量和placeholders,那我们就需要定义一个图模型,来生成TensorFlow的图模型(计算图)我们必须告诉TensorFlow对我们的数据进行哪些操作,来让我们的模型具有预测能力(更加深入的运算我们在后续的博客里面会陆续讲到)

第六步声明loss函数,在上面计算图中我们定义了一些对我们数据的操作。那么我们需要验证我们预测的输出,和我们真实之间的差距,一般对于回归任务来讲的话,就是平方误差:这样就求得了平方误差。但是对于分类任务,那就是交叉熵误差。就像上一节我们用到的loss生成函数就是softmax这种方式。,交叉熵的公式后续用到再给大家介绍。

第七步声明了loss函数以后,我们需要使用BP算法也就是反向传播算法来更新权重和偏置项。在TenorFlow框架里面有好多这样的优化器,都在 tf.train这个模块里面。

最后一步那就是初始化会话Session(),开始训练模型

4.由上面的步骤,大家再结合上一次的网络代码,是不是可以理解了TensorFlow在建立一个网络模型的时候的具体步骤。

5.其实在TensorFlow中还有一个很重要的概念,那就是Tensor,上次说过了它的概念,那么接下来我讲一下TensorFlow里面的Tensor。

6.那怎么使用tensorboard

可以看到我上面执行的命令。然后在浏览器里面输入127.0.0.1:6006然后你就可以看到刚才那个变量的操作过程,这就是tensorboard的魅力

上面就是一个变量在进行初始化时候可视化显示

7. Placeholders使用(一样可以使用tensorboard来查看)

总结

第一篇 TensorFlow安装

第二篇 TensorFlow初体验(fasion-mnist识别)

修改pip全局镜像方法

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180414G0Q5QR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券