机器学习实践(二)

为什么需要 TensorFlow 等库

深度学习通常意味着建立具有很多层的大规模的神经网络。 除了输入X,函数还使用一系列参数,其中包括标量值、向量以及最昂贵的矩阵和高阶张量。 在训练网络之前,需要定义一个代价函数,常见的代价函数包括回归问题的方差以及分类时候的交叉熵。 训练时,需要连续的将多批新输入投入网络,对所有的参数求导后,代入代价函数,从而更新整个网络模型。 这个过程中有两个主要的问题:1. 较大的数字或者张量在一起相乘百万次的处理,使得整个模型代价非常大。2. 手动求导耗时非常久。 所以 TensorFlow 的对函数自动求导以及分布式计算,可以帮我们节省很多时间来训练模型。

数据流图

    借助TensorFlow API用代码描述的数据流图是每个TensorFlow程序的核心。毫不意外,数据流图这种特殊类型的有向图正是用于定义计算结构的。在TensorFlow中,数据流图本质上是一组链接在一起的函数,每个函数都会将其输出传递给0个、1个或更多位于这个级联链上的其他函数。按照这种方式,用户可利用一些很小的、为人们所充分理解的数学函数构造数据的复杂变换。

卷积神经网络(CNN)

    CNN可用于能够表示为张量(各个分量与其相关的分量有序排列在一个多维网格中)的任意类型的数据。当构建完一个具体的CNN模型后,为找到一个能够度量模型准确率的公正指标,需要使用大量不曾在训练集中出现的图像,并用它们创建一个独立的测试集。
    从技术角度看,卷积神经网络是一种至少包含一个层(tf.nn.conv2d)的神经网络,该层的功能是计算其输入f与一组可配置的卷积核g的卷积,以生成该层的输出。可用一种比较简明的定义描述卷积:卷积的目的是将卷积核(滤波器)应用到某个张量的所有点上,并通过将卷积核在输入张量上滑动而生成经过滤波处理的张量。CNN通过对多种简单模式分层布局实现复杂模式的匹配。在CNN的语境中,这些模式被称为滤波器或卷积核,而训练的目标是调节这些卷积核的权值,直到它们能够与训练数据精确匹配。要训练这些滤波器,需要将多个不同的层级联,并利用梯度下降法及其变体调节网络权值。
    简单的CNN架构通常包含卷积层(tf.nn.conv2d)、非线性变换层(tf.nn.relu)、池化层(tf.nn.max_pool)及全连接层(tf.nn.matmul)。
    s
    t
    d
    c

猜你喜欢

转载自blog.csdn.net/essity/article/details/78795838