tensorflow开发语言,基于tensorflow开发算法框架
注意:本例中使用的是Python 3 . 5 . 6版和Tensorflow版。
介绍
Tensorflow是Google推出的机器学习开源神器。它对Python有很好的语言支持,支持CPU、GPU、谷歌TPU等硬件,已经有了各种模型和算法。目前,Tensorflow已经广泛应用于文本处理、语音识别、图像识别等多个机器学习和深度学习领域。
基础框架
有三层:应用层、接口层和核心层。
推荐: 《python教程》
应用层
为Python、C、Java提供机器学习相关的训练库、预测库和编程环境,类似于web系统的前端,主要实现计算图的构建。
接口层
Tensorflow功能模块的封装,方便其他语言平台调用。
核心层
最重要的部分,包括设备层、网络层、数据操作层和图形计算层,执行应用层的计算。
1.设备层
包括Tensorflow在不同硬件设备上的实现,主要支持CPU、GPU和移动设备,实现计算命令在不同硬件设备上的转换,为上层提供统一的接口,实现程序的跨平台功能。
2.网络层
网络层主要包括RPC和RDMA通信协议,实现不同设备之间的数据传输和更新。这些协议将用于分布式计算。
3.数据操作层
以张量为处理对象,实现张量的各种运算和计算。
4.图计算层
包括分布式计算图和本地计算图的实现,实现图的创建、编译、优化和执行等。
设计理念
TensorFlow可以理解为计算图中的“张量流”,其中张量表示计算图中的边,Flow表示计算图中节点的操作引起的数据流。
设计思路是以数据流为核心。在建立相应的机器学习模型时,利用训练数据在模型中流动,将结果以反向传播的方式反馈给模型中的参数,从而调整参数,调整后的参数用于再次迭代计算训练数据。
编程特点
有两个编程特性:
图的定义与图的运算是完全分离的。
在tensorflow中,需要预先定义各种变量,建立相关的数据流图,在数据流图中创建各种变量之间的计算关系,完成图的定义,放入运算的输入数据,才形成输出值。
图形的计算在进程中执行。
tensorflow的相关计算在图中定义,图的具体运行环境在会话中。会话打开后可以开始计算,会话关闭后不能进行计算。
例如:
将张量流作为tf导入
TF.compat . v1 . disable _ eager _ execution()
a=3
b=4
c=5
y=tf.add(a*b,c)
打印(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)
打印(y)
session=tf.compat.v1.Session()
print(session.run(y))
Session.close()可以看出,图形创建后,在Session中进行数据计算,得到最终的输出结果。
设计的好处是在学习的过程中,消耗最多的是数据的训练。这样,在设计的时候,图形就已经确定了,计算只剩下一个迭代的过程。
基本概念
Tensor
张量是tensorflow中最重要的数据结构,用于计算图中的数据传输。创建张量后,需要将其分配给变量或占位符,然后再添加到计算图表中。
session
Session是Tensorflow中计算图的具体执行者,实际上是与图进行交互。一个会话中可以有多个图形。进程的主要目的是将训练数据添加到图表中进行计算,以及修改图表的结构。
对于调用模式,建议使用With语句:
使用session:
session.run()
在图中表示各种计算参数的变量,可以通过调整这些变量的状态来优化机器科学。
习算法。创建变量应使用tf.Variable(),通过输入一个张量,返回一个变量,变量声明后需进行初始化才能使用。
举例说明:
import tensorflow as tfPlaceholdertf.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))
占位符,用于表示输入输出数据的格式,声明了数据位置,允许传入指定类型和形状的数据,通过会话中的feed_dict参数获取数据,在计算图运行时使用获取的数据进行计算,计算完毕后获取的数据就会消失。
举例说明:
x = tf.compat.v1.placeholder(tf.int32)Operationy = 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]}))
操作,是图中的节点,输入输出都是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')2. RandomShuffleQueueinit = 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()))
以随机顺序出列的队列,读入的训练样本无序时使用。举个例子:
rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32')本文来自 python教程 栏目,欢迎学习!以上就是Tensorflow基础(机器学习开源软件库)的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!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()))
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。