`
wx1569488408
  • 浏览: 79135 次
文章分类
社区版块
存档分类
最新评论

博客三--tensorflow的队列及线程基本操作

 
阅读更多

数据预处理时往往涉及多个文件,所以使用多个线程对文件进行处理能够加快整体的运行速度。而线程的操作往往对队列的操作。因为文件处理可以排成队列进行操作。

下面将先上一段对队列基本操作的代码:

#!/usr/bin/env  python
# -*- coding:utf-8 -*-
#队列的基本操作  创建--初始化--出队--执行加1操作--入队--输出
import tensorflow as tf
#创建
q = tf.FIFOQueue(2, "int32")  #队列元素个数  类型
#初始化enqueue_many
init = q.enqueue_many(([0, 10],))
#出队dequeue第一个元素
x = q.dequeue()
y = x+1
#入队enqueue
q_inc = q.enqueue([y])

with tf.Session() as sess:
    init.run()   #初始化运行
    for _ in range(5):         #运行五次队列操作
        v, _ = sess.run([x, q_inc])
        print(v)

可以看到输出结果如图:fc8e9d0885f0da2ea4aeb8e0ae1ccbe7ae7.jpg

 

下面将对其的线程的基本操作,献上源码:

#!/usr/bin/env  python
# -*- coding:utf-8 -*-
#tensorflow提供的线程操作函数主要是tf.Coordinator  tf.QueueRunner;
#其中tf.Coordinator函数用法如下面代码的批注:
import tensorflow as tf
import numpy as np
import threading
import time

#线程终止判断函数   should_stop()函数返回true时停止;也可以通过request_stop通知其他线程停止,且将should_stop()置为true
def MyLoop(coord, worker_id):
    while not coord.should_stop():
        if np.random.rand() <0.1:
            print("Stoping from id : %d\n"% worker_id,)
            coord.request_stop()
        else :
            print("working on id : %d\n"%worker_id,)
        time.sleep(1)
#申明类协同多个线程
coord = tf.train.Coordinator()
#申明创建5个线程
threads = [threading.Thread(target=MyLoop, args=(coord, i, )) for i in range(5)]
#启动所有线程
for t in threads:
    t.start()
#等待所有线程退出
coord.join(threads)

书上的部分xrange(5)已被更改后运行结果如图:

7521744cfd70557370aa0a497621c905405.jpg

下面将来份多线程同时写入一个队列的操作:

#!/usr/bin/env  python
# -*- coding:utf-8 -*-
#创建五个同时执行入队操作的线程,来实现对同一个队列的操作  tf.Coordinator  tf.QueueRunner
import tensorflow as tf
#申明一个队列
queue = tf.FIFOQueue(100, "float")

#定义线程操作
enqueue_op = queue.enqueue([tf.random_normal([1])])

#创建多个同时操作的线程]
qr = tf.train.QueueRunner(queue, [enqueue_op]*5)  #操作队列名称   操作方式   线程数
#将线程加入到制定集合
tf.train.add_queue_runner(qr)

#定义出队
out_tensor = queue.dequeue()

with tf.Session() as sess:
    coord = tf.train.Coordinator() #启动线程
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)   #启动数据集合上的线程
    for _ in range(3):
        print(sess.run(out_tensor)[0])

    #停止线程
    coord.request_stop()
    coord.join(threads)

运行结果可以看到已经随机插入了三个数入队:

9d309a5a7c368ffa5b4908a567b0d40e0d6.jpg

哈哈哈,你学会了吗?

转载于:https://my.oschina.net/u/3770644/blog/3036960

分享到:
评论

相关推荐

    AI人工智能资料 机器学习和深度学习知识 day05-Tensorflow IO操作-队列和线程、文件读取、图片处理 共40页.pptx

    本部分将详细介绍Tensorflow中的队列管理、线程协调以及文件读取。 ### 1. 队列和线程 #### 队列管理 - **FIFOQueue**:先进先出(First In First Out)队列,是最基本的队列类型,元素按照加入的顺序依次出队。...

    深度学习框架(TensorFlow)基础教程——第8章:队列与线程

    本教程聚焦于 TensorFlow 的一个关键特性:队列与线程,这对于大规模数据处理和高效计算至关重要。下面将详细阐述这一主题。 ### 1. 数据预处理和输入管道 在深度学习中,数据预处理是必不可少的步骤,而队列和...

    Parallel-DataLoader-in-TensorFlow:在TensorFlow中并行加载数据以提高整个系统效率

    我们派生$ K $线程来加载和解码CPU中的数据,并维护一个全局FIFO队列来存储数据。 需要一个主要任务线程在GPU中训练网络。 如果加载批处理数据的时间大于在GPU中进行训练的时间,则效率将大大提高。 仿真实验结果...

    AI人工智能资料 机器学习和深度学习教程 Tensorflow基础与进阶全套PPT教程资料 共7个章节.rar

    day05-Tensorflow IO操作-队列和线程、文件读取、图片处理 共40页 day06-Tensorflow、人工神经网络、卷积神经网络、图片识别 共65页 day07-CIFAR图像分类与识别、分布式会话函数、分布式TensorFlow、推荐系统 共74页

    Tensorflow 多线程设置方式

    当有多个不直接相关的操作符时,TensorFlow会尝试在不同的线程中并行执行它们。你可以通过设置`inter_op_parallelism_threads`来定义这个线程池的大小。 3. `session_inter_op_thread_pool`:这是用来配置会话级别...

    tensorflow 操作手册 中文版

    6. TensorFlow运作方式的深入讲解,包括变量的创建、初始化、保存和加载,如何利用TensorBoard可视化学习过程和图结构,数据读入,线程和队列的使用,自定义数据读取器的添加,GPU的使用,以及共享变量的管理等。...

    TensorFlow官方文档中文版.pdf

    涵盖了TensorFlow的基本概念、安装、使用方法、机器学习入门、深入学习、卷积神经网络、递归神经网络、MNIST数据下载、变量、TensorBoard、可视化学习、读取数据、线程和队列、添加新的Op、自定义数据读取、使用GPU...

    AI人工智能资料 机器学习和深度学习知识 day01-机器学习概述、特征工程、机器学习算法 共127页.pptx

    day05-Tensorflow IO操作-队列和线程、文件读取、图片处理 共40页.pptx day06-Tensorflow、人工神经网络、卷积神经网络、图片识别 共65页.pptx day07-CIFAR图像分类 图像识别、分布式会话函数、分布式TensorFlow、...

    【机器学习教程】course-tensorflow.zip

    机器学习 基于TensorFlow 1.8版本的中文基础教程。适用于有Python基础者入门。 目录: ...第七章 队列与线程 第八章 数据集文件操作 第九章 模型存取 第十章 Eager模式 第十一章 TensorBoard基础用法

    tensorflow 中文使用手册

    4. TensorFlow进阶使用:这部分内容涉及了变量的创建、初始化、保存和加载操作,TensorBoard的使用,数据的读入,线程和队列的管理,如何在GPU上运行TensorFlow模型,以及如何创建和使用共享变量等。TensorBoard是...

    tensorflow常用函数介绍

    8. 队列和同步操作:这些操作允许构建多线程环境下的输入管道。例如,tf.train.shuffle_batch用于将输入数据打包并随机乱序。 9. 数据类型转换:数据类型转换在机器学习中也很常见,tf.to_double、tf.to_float、tf....

    Tensorflow 多线程与多进程数据加载实例

    本文将详细介绍如何使用TensorFlow实现多线程与多进程数据加载。 首先,多线程数据加载是一种常见的优化手段。在提供的代码示例中,使用了`tf.data.Dataset` API来构建数据管道。`flat_map`函数用于对每个文件中的...

    AI人工智能资料 机器学习和深度学习知识 day04-Tensorflow基础与进阶 共74页.pptx

    1. **IO操作**:学习如何读取和处理数据,使用队列和线程避免数据加载阻塞模型训练。 2. **神经网络**:构建和训练人工神经网络,包括前馈网络和循环网络。 3. **卷积神经网络(CNN)**:用于图像识别,理解卷积层、...

    TensorFlow数据读取

    本文将详细介绍TensorFlow中的三种数据读取方式:预加载数据(Preloaded data)、喂数据(Feeding)以及从文件中读取(Reading from file)。 #### 一、预加载数据 (Preloaded data) 预加载数据是一种较为简单的数据读取...

    Tensorflow 训练自己的数据集将数据直接导入到内存

    本文的内容涉及到TensorFlow的基本数据导入机制、队列机制以及实际的代码实现。 首先,我们要明确在机器学习和深度学习项目中,数据预处理是非常关键的一步。数据预处理包括数据清洗、格式转换、归一化等操作,这些...

Global site tag (gtag.js) - Google Analytics