TensorFlow是Google Brain 2015年11月在GitHub开源
TensorFlow官方网址:www.tensorflow.org
GitHub网址:https://github.com/tensorflow/tensorflow
模型仓库网址:https://github.com/tensorflow/models
TensorFlow支持的语言Python、C++、GO、Java,后端语言C++、CUDA(Compute Unified Device Architecture,可以在GPU上执行的语言,需要GPU显卡品牌为NVIDIA)
TensorFlow实现的算法可以在其他异构的系统上方便的移植,比如普通CPU服务器、GPU集群、Android、IPhone
TensorFlow不仅可以执行深度学习算法,还可以用来实现其他算法,包括线性回归、逻辑回归、随 机森林等
TensorFlow建立的大规模深度学习模型应用场景非常广,包括语音识别、自然语言处理、计算机 视觉、机器人控制、信息抽取、药物研发、分子活动预测
为了研究超大规模的深度神经网络,Google在2011年启动了Google Brain项目,比如Google Search中的搜索结果排序、Google Photos中的图片标注、Google Translate中的自然语言处理,都依赖建立的深度学习模型,2016年已经有超过2000个项目使用了TensorFlow建立的深度学习模型
TensorFlow中的计算可以表示为一个有向图(Directed Graph)或者称计算图(Computation Graph),其中每一个运算操作(operation)将作为一个节点(node),计算图描述了数据的计算流程,也负责维护和更新状态,用户通过python,c++,go,Java语言设计这个这个数据计算的有向图,计算图中每一个节点可以有任意多个输入和任意多个输出,每一个节点描述了一种运算操作,节点可以算是运算操作的实例化(instance),计算图中的边里面流动(flow)的数据被称为张量(tensor),故得名TensorFlow
有向无环图相关算法:CNN(卷积神级网络)、ANN(人工神经网络)、DNN(深度神经网络)
有向有环图相关算法:RNN(循环神经网络)
pip install –upgrade --user tensorflow==版本号 以更新依赖包管理员身份安装TensorFlow
tensorflow.__version__获取TensorFlow版本
tf.Variable生成变量节点
tf.device指定运行每一个操作的设备(本地CPU/GPU或远程服务器),每一个可用设备有相应的名称比如CPU在TensorFlow中的名称为/cpu:0,默认情况下不区分多个CPU名称所有CPU都使用/cpu:0作为名称,GPU名称/gpu:n(序列号n从0开始)
设置log_device_placement参数可以在生成会话时打印运行每一个运算的设备和运算的操作
TensorFlow默认优先选择GPU
TensorFlow程序会分为两部分,第一部分是构建阶段(创建计算图,通常建立表示机器学习模型的的计算图,和需要去训练模型的计算图),第二部分是执行阶段(通常运行Loop循环重复训练步骤,每一步训练小批量数据,逐渐的改进模型参数)
1.eval()
eval(expression[, globals[, locals]])
expression : 表达式。
globals : 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals : 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
举例:
1、简单表达式
print(eval(‘1+2’))
输出结果:3
2、字符串转字典
print(eval("{‘name’:‘linux’,‘age’:18}")
输出结果:{‘name’:‘linux’,‘age’:18}
3、传递全局变量
print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822}))
输出结果:{‘name’: ‘linux’, ‘age’: 1822}
4、传递本地变量
age=18
print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822},locals()))
输出结果:{‘name’: ‘linux’, ‘age’: 18}
2.tf.placeholder(dtype, shape=None, name=None)
参数:
dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
shape:数据形状。默认是None,就是一维值,也可以多维,比如:[None,3],表示列是3,行不一定
name:名称。
返回:
Tensor类型
3.with语句
tensorflow 学习过程中,经常用到with,值得一说。
With要搭配上下文管理器(Context Manager)对象使用。
所谓的上下文管理器对象,就是实现了上下文管理器协议(Context Manager Protocol)的对象。协议要求对象定义中必须实现__enter__()和__exit__()方法。
当看到下面语句时:
With Context Manager Object [as target]:
Body
它有4个意思:
With块会在Body开始前自动调用Context Manager Object的__enter__()方法;
With块会在Body结束前自动调用Context Manager Object的__exit__()方法,即使Body还未执行完时发生了异常,exit()也总会被调用;
Body中出现异常时,Context Manager Object的__exit__()执行如果返回False,异常继续向上层抛出,如果返回True则该异常被忽略;
可选的as target并非是Context Manager Object本身,而是其调用__enter__()的返回值;
总的来说,With语句帮助上下文管理器对象实现了两个自动化的操作enter和exit,并充分考虑了异常情况。对于资源类对象(用完需要尽快释放)的使用,比如文件句柄、数据库连接等等,这无疑是一种简洁而完善的代码形式。