tensorflow开发语言,基于tensorflow开发算法框架

  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 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基础(机器学习开源软件库)的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: