zoukankan      html  css  js  c++  java
  • tensorflow|tf.train.slice_input_producer|tf.train.Coordinator|tf.train.start_queue_runners

    ####
    '''
    tf.train.slice_input_producer  :定义样本放入文件名队列的方式[迭代次数,是否乱序],但此时文件名队列还没有真正写入数据
        slice_input_producer(tensor_list, num_epochs=None, shuffle=True, seed=None,capacity=32, shared_name=None, name=None)
            tensor_list:如[images,labels] = [['img1','image2','imag3','img4','img5','img6'],[1,2,3,4,5,6]]
            num_epochs:可选参数,迭代次数   num_epochs=None  无限次遍历tensor列表   num_epochs=N 生成器只能遍历列表N次
            shuffle:shuffle=True 乱序样本    shuffle=False需要在批处理时使用tf.train.shuffle_batch函数打乱样本
            seed:随机数种子  在shuffle=True 时使用
            capacity:设置tensor列表的容量
            shared_name:可选参数,如果设置一个‘shared_name’,则在不同的上下文环境(Session)中可以通过这个名字共享生成的tensor
            name:设置操作名称
    
    '''
    import tensorflow as tf
    
    ###思路:准备入文件名队列    创建线程    入队线程
    images = ['img1','image2','imag3','img4','img5','img6']
    labels = [1,2,3,4,5,6]
    
    epoch_num = 8
    queue = tf.train.slice_input_producer([images,labels],num_epochs=None,shuffle=False) #从文件里抽取tensor,准备放入文件名队列
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        coord = tf.train.Coordinator()                             ###创建一个线程协调器,用来管理之后再Session中启动的所有线程
        ###启动入队线程,由多个或单个线程,按照设定规则把文件读入到文件名队列中,返回线程ID的列表。一般情况下,系统有多少核,就会启动多少个入队线程
        ###入队具体使用多少个线程在tf.train.batch中设定
        threads = tf.train.start_queue_runners(sess,coord=coord)
        for i in range(epoch_num):
            k = sess.run(queue)
            print("*************")
            print(i,k,k[0],k[1])
    
            '''
            *************
    0 [b'img1', 1] b'img1' 1
    *************
    1 [b'image2', 2] b'image2' 2
    *************
    2 [b'imag3', 3] b'imag3' 3
    *************
    3 [b'img4', 4] b'img4' 4
    *************
    4 [b'img5', 5] b'img5' 5
    *************
    5 [b'img6', 6] b'img6' 6
    *************
    6 [b'img1', 1] b'img1' 1
    *************
    7 [b'image2', 2] b'image2' 2
            '''
    准备 -- 创建线程 -- 入队线程
  • 相关阅读:
    IntelliJ IDEA 创建 hello world Java web Maven项目从头到尾都有图有真相2017版本
    artifact什么意思--刚刚搞web开发的同学可能要问个为什么
    《亲测 已解决》Address localhost:8080 is already in used
    Linux CentOS 服务器搭建与初始化配置图文详解
    CentOS下安装JDK的三种方法
    关于tomcat成功启动但访问不了欢迎界面的问题
    Mac系统安装和配置tomcat步骤详解
    mac jenkins环境安装及jenkins使用(未完待续)
    github初始密码查看
    github公钥私钥
  • 原文地址:https://www.cnblogs.com/liuhuacai/p/11725911.html
Copyright © 2011-2022 走看看