神经网络是一种数学模型,主要用于深度学习,深度学习相比于传统机器学习算法的优势之一就是可以自主选择学习模型,并将其通过反复的调整达到最优化,这里的反复调整在吴恩达的课上是说,在overfit和去high variance中通过反复实验均达到最优。
现在解释tensorflow中的一些名词:
数据流图:数据流是一种常用的并行计算编程模型,数据流图是由节点(nodes)和线(edges)构成的有向图,在 TensorFlow 中,每个节点都是用 tf.Tensor
的实例来表示的,即每个节点的输入、输出都是Tensor。
tensorflow中的Graph是模型通过DAG(有向无环图)描述的,图中有节点和线,TensorFlow 底层是使用C++实现,这样可以保证计算效率,并使用 tf.Session
类来连接客户端程序与C++运行时。上层的Python、Java等代码用来设计、定义模型,构建的Graph,最后通过tf.Session.run()
方法传递给底层执行。
TensorFlow 中的数据流图有以下几个优点:
- 可并行 计算节点之间有明确的线进行连接,系统可以很容易的判断出哪些计算操作可以并行执行
- 可分发 图中的各个节点可以分布在不同的计算单元(CPU、 GPU、 TPU等)或者不同的机器中,每个节点产生的数据可以通过明确的线发送的下一个节点中
- 可优化 TensorFlow 中的 XLA 编译器可以根据数据流图进行代码优化,加快运行速度
- 可移植 数据流图的信息可以不依赖代码进行保存,如使用Python创建的图,经过保存后可以在C++或Java中使用
tensor:张量,代数中的概念,可以简单看成矩阵和向量和标量的推广,再次特别需要注意张量的维度,比如:1,是一个0维的张量;[1,1],是一个1维的张量;[[1],[1]],是一个2维的张量(2*1),在一个维度上的值,在另一个维度上的值也是1;[[[1,2,3]],[[4,5,6]]],是一个三维张量(2*1*3)。在tensorflow中tensor是节点的输入和输出。
operator:操作,op作为一个节点加入默认图,这些操作可以是tf.add(),矩阵乘法等。(ps:tf.constant(),tf.placeholder()也作为节点加入默认图)
optimizers:优化器, tensorflow提供了很多优化器算法,其中最简单的应该是梯度下降算法:tf.train.GradientDescentOptimizer()。
session:负责让图运算起来。
variable:变量,数据类型之一,经过session初始化之后才可以使用
device:指定运行设备,tf.device('/cpu:0')—指定CPU运行图;tf.device('\gpu:0')—指定第0号GPU运行图
参考博客:点击打开链接