人工智能从入门到精通(17)

来源:互联网 发布:云平台网络架构 编辑:程序博客网 时间:2024/06/06 00:24

tensorflow多线程基础:
1.队列的使用

import tensorflow as tfq=tf.FIFOQueue(2,"int32")init=q.enqueue_many(([0,10],))x=q.dequeue()#第一个元素出队列y=x+1q_inc=q.enqueue([y])with tf.Session() as sess:    init.run()    for _ in range(5):        v,_=sess.run([x,q_inc])        print(v)

tf.Coordinator协调多个线程一起停止

import tensorflow as tfimport numpy as npimport threadingimport timedef 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()threads=[threading.Thread(target=MyLoop,args=(coord,i,))for i in range(5)]for t in threads:t.start()coord.join(threads)

tf.QueueRunner启动多个线程操作同一个队列

import tensorflow as tfqueue=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)
原创粉丝点击