接下来我们来讲TensorFlow。TensorFlow是谷歌研发的库,用于构建这类机器学习模型。TensorFlow是开源的库,使用Python。同时是用来构建神经网络的通用机器学习库。去年11月我们对它进行了开源。现在已经被用于许多机器学习项目。
TensorFlow的名字源于我之前提过的,即让张量(tensor)在管道中流动(flow)。从而有张量的数据流通过神经网络。这个思路来自于为这些张量绘制的流程图。它有一些很酷的特征,比如说能够灵活直观地构建图像框架,支持线程、队列和异步运算。可以在CPU GPU或任何支持TensorFlow的设备上运行。它会在图中进行操作 并对其进行分解,分配到许多的CPU和GPU上。
TensorFlow的核心数据结构在于图(graph)。操作就是图中的节点,值的张量在操作间传递。包括其他内容比如常量(constants)即在训练时不改变的量。这些可以在训练时或者更新模型时改变,但在单次训练中是不会改变的。还有占位符(placeholders)和变量(variables)。占位符类似于神经网络中的输入,而变量则是在训练神经网络时不断更新的。一般来说,有作为神经网络输入的占位符,以及变量类似在训练中进行更新的权重或者偏差。会话(session)则用于封装运行所在的环境,它的作用类似于把操作映射到设备上。这张幻灯片是非排他性列表,包括TensorFlow所支持的操作。我们有一些TensorFlow中所支持的操作。
这是在Jupiter notebook上运行TensorFlow的例子。我将用非常基础的MNIST例子进行讲解,MNIST是用于机器学习的经典数据集,包括许多手写数字的图片。你要做的就是,用这些数字进行