TensorFlow深度学习算法原理与编程实战

大家好,我们的小鲸1号由于半夜太饿偷吃了老板的榨菜,今天早上已经被拖出去了,今天上岗的小鲸2号灰常灰常高级,来给大家讲讲深度学习算法~怀念小鲸1号请点爱过(看过~)

今天给大家开始讲tensorflow方面的有关知识,tensorflow是目前一款十分流行的深度学习程序设计的框架工具,下面我们先对它做一个简要的介绍。Tensorflow是由 Google开发,是GitHub上最受欢迎的机器学习库之一。Tensorflow程序中的计算过程可以表示为一个计算图,计算图中的每一个运算操作可以视为一个结点(Node),每一个结点可以任意个输入和任意个输出,而在Node中流动的数据流我们就称之为张量(tensor), 张量(Tensor)就是在边中流动(Flow)的数据,Tensor Flow 之名的得来也是参考了上述概念。

张量的概念

张量可以简单理解为不同维度的数组。其中零阶张量的表示形式是标量(Scaler),也就是普通的一个数;而一阶张量的表示形式是向量(vector),也就是一维数组,二阶张量的表示形式也就是一个二维数组,多阶张量的表示形式就是一个多维数组,详情我们可以看下面这个图:

TensorFlow深度学习算法原理与编程实战_第1张图片

图1 不同大小的张量

虽然张量是可以直接做加减乘除的运算的,但是我们要注意的是张量只是引用了程序当中的运算结果而不是一个真正的数组,例如我们这段代码只是输出了张量的属性:

TensorFlow深度学习算法原理与编程实战_第2张图片

代码输出的并不是我们想的两个数组相加后的结果[5,5,5,5],而是得到了一个张量表示,它主要保存的是加法运算结果的三个属性:操作、维度、数据类型。这三个属性的理解在图上即可看出,在这里我们不再赘述。

如何使用张量

当计算图构造完成之后,我们可以在程序运行的时候使用张量来查看计算的结果,这时候我们需要定义会话(Session),在调用会话的run()函数时会把要得到真实数字的张量传递进去,代码如下所示:

TensorFlow深度学习算法原理与编程实战_第3张图片

这样我们就得到了想要的输出结果,所以session就相当于是我们与graph交互的一个handle.此外我们还可以直接使用sess = tf.Session() 这行代码来替代上面的,输出的结果是否一样呢?可以自己尝试一下。不知道大家有没有发现上面我们所定义的a,b都是常量,除了常量之外,我们可以通过函数tf.Variable()来定义变量。但是需要特别注意的是,在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。想要将所有图变量进行集体初始化时应该使用全局初始化tf.global_variables_initializer(),或者单个初始化,如下:

TensorFlow深度学习算法原理与编程实战_第4张图片

同样,我们也进行一个简单的相加,只不过这次的“x”和“y”都是变量,在进行run函数的时候,就必须要先对所有的变量进行一个初始化,否则直接进行sess.run()的话就会向上面一样报错!正确的代码:

TensorFlow深度学习算法原理与编程实战_第5张图片

在这里我们提醒一下tensorflow常量和变量的区别:常量定义后值和维度不可变,变量定义后值可变而维度不可变。Tensorflow可以使用assign(variable,new_value)来更改变量的值,但是真正作用在garph中,必须要调用gpu或者cpu运行这个更新过程

总结:今天对Tensorflow做了一个简单的介绍和基本操作,在今后的编程中,我们都应该遵循这样一个原则:把一个程序分为两个阶段,第一个阶段是定义计算图中的运算,程序部分要放在Session前面;第二阶段是运算的执行,这部分由Session 来完成,这样能够使我们的代码思路更加清晰。在下一节的内容中我们会讲到另一个十分重要的单位:占位符(Placeholder)严肃的小鲸2号对大家说:深度学习需认真,请大家记住我,我是2号,给我点赞!

关注小鲸融创,一起学习金融科技!

TensorFlow深度学习算法原理与编程实战_第6张图片

你可能感兴趣的:(TensorFlow深度学习算法原理与编程实战)