在这篇文章中,我们将会学习tensorflow相关的基础知识,以及继续改造和进一步理解10+32=42中,tensor是怎样flow的。
Tensorflow是一个用于创建和发布机器学习模型的框架。传统的算法中,我们会编写程序清楚地写下规则告诉计算机在所有的情况下应该怎样做。而机器学习算法里,我们不会显示的列出所有规则,而是喂给它数据称之为训练,而机器学习则会通过这样的训练得到它自己的规则,这就是和传统算法最显著的差别。
这个要从tensorflow的设计初衷出发,tensorflow不是被设计用来直接完成神经网络等的实现,而是为了处理许多不确定的有差别的个体要素所组成的大量数据,而这些数据可以存放在多维数组之中,而这些多维数组就被称为tensor。而操作这些数据,我们一般需要构建一个computional graph,比如BP网络就是这样做的,而整个过程就是数据在构建的这个系统中的流动的过程。在这篇文章中,我们将会继续炒一下冷饭,看一下上一篇的helloworld中的那个神奇的42的加法在tensorflow中的具体含义,看看这些tensor是如何flow的。
tensorflow已经开始在很多领域展开了应用实践的落地,尤其是一些传统解决起来比较负责的领域,恰恰是tensorflow的强项,比如:
研究Deep Learning,Tensorflow不是第一个也不是唯一的一个,类似的还有很多,比如
项目 | 详细 |
---|---|
theano | http://deeplearning.net/software/theano/ |
torch | http://torch.ch/ |
pytorch | http://pytorch.org/ |
Tensorflow到神经网络的实现,还是需要了解不少ANN相关的基础知识的,而诸如Kearas此类的框架则进一步的集成,提供了一个更加容易使用的黑盒子,更加方便的API,而其实Kearas本身就是一个基于Theano和TensorFlow的深度学习库,有很好的易用性,适合快速体验。
项番 | OS |
---|---|
1 | Windows |
2 | macOS |
3 | Linux |
PS:同时支持Cloud或者本地的方式
项番 | 设备 |
---|---|
1 | 本地运行Windows/Linux/macOS的机器 |
2 | 运行Tensorflow服务的Linux服务器 |
3 | Google的Machine Learning Engine Service的云服务 |
4 | iOS或者Android等移动设备 |
Tensorflow支持GPU进行运算,但是需要注意如下三点:
项番 | 详细 |
---|---|
1 | Tensorflow能利用NVIDIA-Brand GPUs |
2 | 目前Tensorflow不支持NVIDIA-brand以外的其他vendor的GPU |
3 | 使用GPU时,Tensorflow需要安装CUDA和cuDNN(NVIDIA) |
简单来说C++更快python更易用。为了提高执行速度,Tensorflow的核心执行引擎就是使用c++写的,而python更容易使用而且支持地更好。
在Helloworld的例子中,我们介绍了10+32=42的彩蛋的意义。而在这篇文章中,我们继续使用这个梗,趁机介绍一下tensor是如何flow的。
概念 | 详细 |
---|---|
tensor | 张量:多维数组 |
Shape | tensor的维度和大小 |
computional graph | 计算图 |
data flow graph | 数据流图 |
Variable | 变量,一般用来表示图中的各计算参数,包括矩阵,向量等。y=f(ax+b),变量一般用于保存a和b的值(训练参数) |
placeholder | 占位符,在 TensorFlow 用来描述等待输入的节点,只需要指定类型即可,具体的值在运行时传入(feed_dict) |
operation/op | 操作,加减乘除等具体运算在tensorflow中被称为操作 |
Node | 节点,一般把某特定操作的称为计算图的一个节点 |
Session | 会话,Tensorflow的具体操作的执行必须在Session中进行 |
创建模型 | tensorflow第一步要创建模型 |
训练 | 创建模型之后,使用数据进行学习,称为训练 |
[root@liumiaocn ~]# cat tensor_add.py
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
A = tf.placeholder(tf.float32,name="A")
B = tf.placeholder(tf.float32,name="B")
cal_op = tf.add(A,B,name="addition")
session = tf.Session()
result = session.run(cal_op, feed_dict={A:[10],B: [32]})
print(result)
session.close()
[root@liumiaocn ~]#
[root@liumiaocn ~]# python tensor_add.py
[ 42.]
[root@liumiaocn ~]#
42是一个神奇的数字,代表着宇宙的真谛,所以调整一下,也可以有很多中情况得到42,这个梗差不多能说一辈子那么长了。
[root@liumiaocn ~]# cat tensor_add.py
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
A = tf.placeholder(tf.float32,name="A")
B = tf.placeholder(tf.float32,name="B")
cal_op = tf.add(A,B,name="addition")
session = tf.Session()
result = session.run(cal_op, feed_dict={A:[10,11,12,13,14],B: [32,31,30,29,28]})
print(result)
session.close()
[root@liumiaocn ~]#
[root@liumiaocn ~]# python tensor_add.py
[ 42. 42. 42. 42. 42.]
[root@liumiaocn ~]#
这篇文章了解了tensorflow一些概述性的东西,知道了为什么叫做tensorflow,它是如何flow的,在后面的文章中我们将进一步学习基础知识为ANN实践打下基础。