今天继续机器学习,我们的到底是机器学习还是深度学习,我们先看一看他们之间的关系
人工智能、机器学习和深度学习是非常相关的几个领域。图3总结了它们之间的关系。人工智能是一类非常广泛的问题,机器学习是解决这类问题的一个重要手段,深度学习则是机器学习的一个分支。在很多人工智能问题上,深度学习的方法突破了传统机器学习方法的瓶颈,推动了人工智能领域的发展。
上面是神经元结构图,神经网络是一种运算模型,是对神经元的抽象,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),神经网络就是通过这种方式来模拟人类的记忆。网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
了介绍神经网络的前向传播算法,需要先了解神经元的结构。神经元是构成一个神经网络的最小单元,看起来和神经元结构图相似,上图显示了一个神经元的结构
上一次我们给大家带一些代码,但是并没有对其进行解释
TensorFlow对Python语言的支持是最全面的,所以本文中将使用Python来编写TensorFlow程序。下面的程序给出一个简单的TensorFlow demo程序来实现两个向量求积。
我们定义两个常量分别 x1, x2, 然后对其进行乘法运输,我们并没直接运算,而是将表达式保存在 session ,随后调用 session 的 run 方法才真正进行运算。
接下来最重要的一步就是创建一个session,用来计算生成的符号表达式。实际上,到现在为止TensorFlow代码并没有被执行。需要再次强调,TensorFlow既是一个表示机器学习算法的接口,又是运行机器学习算法的实现,该示例就是一个很好的例子。
通过Session()接口创建一个session后,只有调用run()方法后才开始真正的被执行。在这个代码示例中,变量的值通过feed_dict参数传给run()。相关代码解析表达式并显示乘法结果为30再退出。
通过这个示例,我想阐明的是,正常使用TensorFlow编程的步骤为:首先定义实现整个问题,其次,创建一个session来运行相关计算。
TensorFlow的名字中已经说明了它最重要的两个概念——Tensor和Flow。Tensor就是张量。在TensorFlow中,所有的数据都通过张量的形式来表示。从功能的角度上看,张量可以被简单理解为多维数组。但张量在TensorFlow中的实现并不是直接采用数组的形式,它只是对TensorFlow中运算结果的引用。在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。在上面给出的测试样例程序中,第一个print输出的只是一个引用而不是计算结果。
一个张量中主要保存了三个属性:名字(name)、维度(shape)和类型(type)。张量的第一个属性名字不仅是一个张量的唯一标识符,它同样也给出了这个张量是如何计算出来的。张量的命名是通过“node:src_output”的形式来给出。其中node为计算节点的名称,src_output表示当前张量来自节点的第几个输出。
比如张量“add:0”就说明了result这个张量是计算节点“add”输出的第一个结果(编号从0开始)。张量的第二个属性是张量的维度(shape)。这个属性描述了一个张量的维度信息。比如“shape=(2,) ”说明了张量result是一个一维数组,这个数组的长度为2。张量的第三个属性是类型(type),每一个张量会有一个唯一的类型。TensorFlow会对参与运算的所有张量进行类型的检查,当发现类型不匹配时会报错。
如果说TensorFlow的第一个词Tensor表明了它的数据结构,那么Flow则体现了它的计算模型。Flow翻译成中文就是“流”,它直观地表达了张量之间通过计算相互转化的过程。
网友评论