Tensorflow基础(机器学习开源软件库)

Tensorflow基础(机器学习开源软件库)

说明:本文实例使用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 tftf.compat.v1.disable_eager_execution()a = 3b = 4c = 5y = 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 tftf.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基础(机器学习开源软件库)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2250273.html

(0)
上一篇 2025年2月26日 23:50:46
下一篇 2025年2月18日 11:09:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 为什么急于寻找Python的替代者?

    ​译者 | 刘涛 审校 | 孙淑娟 人工智能(AI)和机器学习(ML)是我们日常生活的伙伴,很难想象没有算法和统计模型会是怎样一种生活。每当我们听到机器学习这个词时,首先想到的就是 Python。因为Python长期以来一直是机器学习的代言…

    2025年2月26日
    200
  • Julia 和 Python,哪一个更快?

    Julia 是一门高度抽象的动态编程语言。虽然它是一门能够开发所有程序的通用语言,但它有几个特点,非常适用于科学计算和数值计算。Python 在 1990 年初作为一种简单的面向对象的程序语言出现,如今已经有了显著的发展。本文将从它们在神经…

    2025年2月26日 编程技术
    200
  • 用于清理数据的五个简单有效 Python 脚本

    将 PDF 转换为 CSV 在机器学习中,我们应该少一些“数据清理”,多一些“数据准备”。当我们需要从白皮书、电子书或其他PDF文档中抓取数据时,这个脚本为我节省了很多时间。 import tabula#获取文件pdf_filename =…

    2025年2月26日
    200
  • 2022年十个用于时间序列分析的Python库推荐

    时间序列是数据点的序列,通常由在一段时间间隔内进行的连续测量组成。时间序列分析是使用统计技术对时间序列数据进行建模和分析,以便从中提取有意义的信息并做出预测的过程。 时间序列分析是一个强大的工具,可以用来从数据中提取有价值的信息,并对未来的…

    2025年2月26日 编程技术
    200
  • 当Python也来进行修图神器,发现是真的蛮好用的呢!!

    今天小编来和大家分享一下Python​在图像处理当中的具体应用,那既然是图像处理,那必然要提到opencv模块了,该模块支持与计算机视觉和机器学习相关的众多算法,并且应用领域正在日益扩展,大致有以下几种领域。 物体识别:通过视觉以及内部存储…

    2025年2月26日
    200
  • Python 数据可视化的三大步骤

    1、首先,要知道我们用哪些库来画图? matplotlib Python中最基本的作图库就是matplotlib,是一个最基础的Python可视化库,一般都是从matplotlib上手Python数据可视化,然后开始做纵向与横向拓展。 Se…

    2025年2月26日 编程技术
    200
  • 2021 十大 Python 机器学习库

    Python 之于机器学习,可以说是最为锋利的武器;而机器学习之于 Python,则有着扩大影响再造辉煌的助力。二者相辅相成,以至于一提到机器学习,人们自然而然的就想到了 Python,虽然有些狭隘,但是背后也有其存在的必然性! 今天我们就…

    2025年2月26日 编程技术
    200
  • 通过少量代码即可提取大量时间序列特征

    传统的机器学习算法不能捕捉时间序列数据的时间顺序。数据科学家需要执行相关的特征工程,将数据的重要特征捕获到几个指标中。生成大量的时间序列特征并从中提取相关特征是一项耗时且繁琐的工作。 python的tsfresh包可以为时间序列数据生成标准…

    2025年2月26日
    200
  • python中怎么使用tensorflow构建长短时记忆LSTM

    LSTM简介 1、RNN的梯度消失问题 在过去的时间里我们学习了rnn循环神经网络,其结构示意图是这样的: 其存在的最大问题是,当w1、w2、w3这些值小于0时,如果一句话够长,那么其在神经网络进行反向传播与前向传播时,存在梯度消失的问题。…

    2025年2月26日 编程技术
    200
  • Python中的机器学习是什么?

    近年来,机器学习(machine learning)成为了it行业中最热门的话题之一,python作为一种高效的编程语言,已经成为了许多机器学习实践者的首选。本文将会介绍python中机器学习的概念、应用和实现。 一、机器学习概念 机器学习…

    编程技术 2025年2月26日
    200

发表回复

登录后才能评论