在一般的講解中,tensorflow使用多執行緒讀取資料都會涉及到兩個概念,檔名佇列和檔案佇列。將原本簡單的概念繞的很複雜,而且不同的部落格還相互抄,毫無自己的理解。其實檔名佇列完全沒有必要,只要執行緒能將資料預讀取到檔案佇列,其他的處理咋弄都行。下面是我想到的用法:
import tensorflow as tf
import numpy
import os
import cv2
os.environ['tf_cpp_min_log_level']='2'
img=cv2.imread('./lena_gray.jpg') #資料讀取,預處理,data argument等等完全可以用python處理
input_img=tf.convert_to_tensor(img) #將資料處理完後轉化為tensor,便於shuffle_batch使用,不用shuffle_batch的話也可以自己
#定義乙個佇列
img_batch=tf.train.shuffle_batch([input_img],batch_size=2,capacity=200,min_after_dequeue=100,num_threads=2)
sess = tf.session()
init = tf.initialize_all_variables()
sess.run(init)
tf.train.start_queue_runners(sess=sess) #啟動讀資料的執行緒
for i in range(3):
value=sess.run(img_batch)
print(value.shape)
Tensorflow使用多執行緒
tensorflow的session物件支援多執行緒,可以在同乙個session中建立多個執行緒,預設是cpu有多少個核,就啟動多少個執行緒。tensorflow提供了倆個類來實現對session中多執行緒的管理 tf.coordinator和tf.queuerunner,這倆個類必須一起使用。co...
tensorflow 佇列與多執行緒
1 tensorflow資料輸入簡介 為了避免影象預處理成為神經網路模型訓練效率的瓶頸,tensorflow提供了多執行緒處理輸入資料的框架。流程如下 1 指定原始資料的檔案列表 2 建立檔案列表佇列 3 從檔案中讀取資料 4 資料預處理 5 整理成batch作為神經網路輸入 tensorflow中...
TensorFlow佇列與多執行緒
1 tf.coordinatorimport numpy as np import threading import time import tensorflow as tf 執行緒中執行的程式,這個程式每隔1秒判斷是否需要停止並列印自己的id def myloop coord,worker id ...