阐明:本文实例应用Python版本为3.5.6,Tensorflow版本为2.0
引见
Tensorflow是Google推出的机械学习开源神器,对Python有着精良的言语支持,支持CPU,GPU以及Google TPU等硬件,而且曾经领有了各类百般的模子以及算法。今朝,Tensorflow已被宽泛使用于文本解决,语音辨认以及图象辨认等多项机械学习以及深度学习畛域。
根底框架
分为三层:使用层、接口层以及外围层
保举:《python教程》
使用层
提供了机械学习相干的训练库、预测库以及针对Python、C++以及Java等变为言语的编程环境,相似于web零碎的前端,次要完成了对较量争论图的结构。
接口层
对Tensorflow性能模块的封装,便于其它言语平台的挪用。
外围层
最首要的局部,包罗设施层、网络层、数据操作层以及图较量争论层,执行使用层的较量争论。
1.设施层
包罗Tensorflow正在没有同硬件设施上的完成,次要支持CPU、GPU以及Mobile等设施,正在没有同硬件设施上完成较量争论饬令的转换,给下层提供对立的接口,完成顺序的跨平台性能。
2.网络层
网络层次要包罗RPC以及RDMA通讯协定,完成没有同设施之间的数据传输以及更新,这些协定城市正在散布式较量争论顶用到。
3.数据操作层
以tensor为解决工具,完成tensor的各类操作以及较量争论。
4.图较量争论层
包罗散布式较量争论图以及内陆较量争论图的完成,完成图的创立、编译、优化以及执行等。
设计理念
能够将Tensorflow了解为一张较量争论图中“张量的活动”,此中,Tensor(张量)代表了较量争论图中的边,Flow(活动)代表了较量争论图中节点所做的操作而构成的数据活动。
其设计理念是以数据流为外围,当构建相应的机械学习模子后,应用训练数据正在模子中进行数据活动,同时将后果以反向流传的形式反馈给模子中的参数,以进行调参,应用调整后的参数对训练数据再次进行迭代较量争论。
编程特性
有两个编程特性:
图的界说以及图的运转齐全离开
正在tensorflow中,需求事后界说各类变量,建设相干的数据流图,正在数据流图中创立各类变量之间的较量争论关系,实现图的界说,需求把运算的输出数据放出来后,才会构成输入值。
图的较量争论正在会话中执行
tensorflow的相干较量争论正在图中进行界说,而图的详细运转坏境正在会话(session)中,开启会话后,能力开端较量争论,封闭会话就不克不及再进行较量争论了。
举个例子:
import tensorflow as tf tf.compat.v1.disable_eager_execution() a = 3 b = 4 c = 5 y = tf.add(a*b, c) print(y) a = tf.constant(3, tf.int32) b = tf.constant(4, tf.int32) c = tf.constant(5, tf.int32) y = tf.add(a*b, c) print(y) session = tf.compat.v1.Session() print(session.run(y)) session.close()
能够看出,正在图创立后,并正在会话中执行数据较量争论,终极输入后果。
设计的益处就是:学习的进程中,耗费最多的是对数据的训练,这样设计的话,当进行较量争论时,图曾经确定,较量争论就只剩下一个一直迭代的进程。
根本概念
Tensor
张量,是tensorflow中最次要的数据构造,张量用于正在较量争论图中进行数据通报,创立了张量后,需求将其赋值给一个变量或占位符,之后才会将该张量增加到较量争论图中。
session
会话,是Tensorflow入彀算图的详细执行者,与图进行实际的交互。一个会话中能够有多个图,会话的次要目的是将训练数据增加到图中进行较量争论,也能够修正图的构造。
挪用模式保举应用with语句:
with session: session.run() Variable
变量,示意图中的各个较量争论参数,经过调整这些变量的状态来优化机械学习算法。创立变量应应用tf.Variable(),经过输出一个张量,前往一个变量,变量申明后需进行初始化能力应用。
举例阐明:
import tensorflow as tf tf.compat.v1.disable_eager_execution() tensor = tf.ones([1, 3]) test_var = tf.Variable(tensor) # 初始化变量 init_op = tf.compat.v1.global_variables_initializer() session = tf.compat.v1.Session() with session: print("tensor is ", session.run(tensor)) # print("test_var is ", session.run(test_var)) session.run(init_op) print("after init, test_var is", session.run(test_var))
Placeholder
占位符,用于示意输出输入数据的格局,申明了数据地位,容许传入指定类型以及形态的数据,经过会话中的feed_dict参数猎取数据,正在较量争论图运转时应用猎取的数据进行较量争论,较量争论终了后猎取的数据就会隐没。
举例阐明:
x = tf.compat.v1.placeholder(tf.int32) y = tf.compat.v1.placeholder(tf.int32) z = tf.add(x, y) session = tf.compat.v1.Session() with session: print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))
Operation
操作,是图中的节点,输出输入都是Tensor,作用是实现各类操作,包罗:
数学运算:add, sub, mul, div, exp ...
数组运算:concat, slice, split, rank ...
矩阵运算:matmul, matrixinverse ...
神经网络构建:softmax, sigmoid, relu ...
反省点:save, restore ...
行列步队以及同步:enqueue, dequeue, mutexacquire, mutexrelease ...
张量管制:merge, switch, enter, leave ...
Queue
行列步队,图中有状态的节点。蕴含出列(endqueue)以及入列(dequeue)两个操作,出列前往较量争论图中的一个操作节点,入列前往一个tensor值。
此中,行列步队有两种:
1. FIFOQueue
按出列程序入列的行列步队,正在需求读入的训练样本有序时应用。举个例子:
fifo_queue = tf.compat.v1.FIFOQueue(10, 'int32') init = fifo_queue.enqueue_many(([1, 2, 3, 4, 5, 6], )) with tf.compat.v1.Session() as session: session.run(init) queue_size = session.run(fifo_queue.size()) for item in range(queue_size): print('fifo_queue', session.run(fifo_queue.dequeue()))
2. RandomShuffleQueue
以随机程序入列的行列步队,读入的训练样本无序时应用。举个例子:
rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32') init = rs_queue.enqueue_many(([1, 2, 3, 4, 5], )) with tf.compat.v1.Session() as session: session.run(init) queue_size = session.run(rs_queue.size()) for i in range(queue_size): print('rs_queue', session.run(rs_queue.dequeue()))
本文来自 python教程 栏目,欢送学习!
以上就是Tensorflow根底(机械学习开源软件库)的具体内容,更多请存眷资源魔其它相干文章!
标签: python教程 python编程 python使用问题 Tensorflow 机器学习
抱歉,评论功能暂时关闭!