亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tensorflow如何設置多線程

發布時間:2021-05-10 11:47:42 來源:億速云 閱讀:1416 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Tensorflow如何設置多線程的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一. 通過 ConfigProto 設置多線程

在進行 tf.ConfigProto() 初始化時,可以通過設置相應的參數,來控制每個操作符 op 并行計算的線程個數或 session 線程池的線程數。主要涉及的參數有以下三個:

1. intra_op_parallelism_threads 控制運算符op內部的并行
當運算符 op 為單一運算符,并且內部可以實現并行時,如矩陣乘法,reduce_sum 之類的操作,可以通過設置 intra_op_parallelism_threads 參數來并行。

2. inter_op_parallelism_threads 控制多個運算符op之間的并行計算
當有多個運算符 op,并且他們之間比較獨立,運算符和運算符之間沒有直接的路徑 Path 相連。Tensorflow會嘗試并行地計算他們,使用由 inter_op_parallelism_threads 參數來控制數量的一個線程池。
在第一次創建會話將設置將來所有會話的線程數,除非是配置了 session_inter_op_thread_pool 選項。

3. session_inter_op_thread_pool 配置會話線程池。
如果會話線程池的 num_threads 為 0,使用 inter_op_parallelism_threads 選項。

二. 通過隊列進行數據讀取時設置多線程

1. 通過以下函數進行樣本批處理時,可以通過設置 num_threads 來設置單個 Reader 多線程讀取

1) batch(tensors, batch_size, num_threads=1, capacity=32,
enqueue_many=False, shapes=None, dynamic_pad=False,
allow_smaller_final_batch=False, shared_name=None, name=None)

2) maybe_batch(tensors, keep_input, batch_size, num_threads=1, capacity=32,
enqueue_many=False, shapes=None, dynamic_pad=False,
allow_smaller_final_batch=False, shared_name=None, name=None)

3) shuffle_batch(tensors, batch_size, capacity, min_after_dequeue,
num_threads=1, seed=None, enqueue_many=False, shapes=None,
allow_smaller_final_batch=False, shared_name=None, name=None)

4) maybe_shuffle_batch(tensors, batch_size, capacity, min_after_dequeue,
keep_input, num_threads=1, seed=None,
enqueue_many=False, shapes=None,
allow_smaller_final_batch=False, shared_name=None,
name=None)

例:

import tensorflow as tf 
 
 
filenames = ['A.csv', 'B.csv', 'C.csv'] 
# 生成一個先入先出隊列和一個 QueueRunner,生成文件名隊列 
filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 
 
 
# 定義 Reader 和 Decoder
reader = tf.TextLineReader() 
key, value = reader.read(filename_queue) 
example, label = tf.decode_csv(value, record_defaults=[['null'], ['null']])
 
 
# 使用tf.train.batch() 會為 graph 添加一個樣本隊列和一個 QueueRunner。 
# 經過 Reader 讀取文件和 Decoder 解碼后數據會進入這個隊列,再批量出隊。
# tf.train.batch() 這里只有一個 Reader,可以設置多線程
 
example_batch, label_batch = tf.train.batch([example, label], batch_size=5) 
 
 
with tf.Session() as sess: 
  coord = tf.train.Coordinator() 
  threads = tf.train.start_queue_runners(coord=coord) 
  for i in range(10): 
    e_val,l_val = sess.run([example_batch,label_batch]) 
    print e_val,l_val 
  coord.request_stop() 
  coord.join(threads)

2. 通過以下函數進行樣本批處理時,可以通過設置 Decoder 和 Reader 的個數來設置多 Reader 讀取,其中每個 Reader 使用一個線程

1) batch_join(tensors_list, batch_size, capacity=32, enqueue_many=False,
shapes=None, dynamic_pad=False, allow_smaller_final_batch=False,
shared_name=None, name=None):

2) maybe_batch_join(tensors_list, keep_input, batch_size, capacity=32,
  enqueue_many=False, shapes=None, dynamic_pad=False,
  allow_smaller_final_batch=False, shared_name=None,
  name=None)

3) shuffle_batch_join(tensors_list, batch_size, capacity,
min_after_dequeue, seed=None, enqueue_many=False,
shapes=None, allow_smaller_final_batch=False,
shared_name=None, name=None)

4) maybe_shuffle_batch_join(tensors_list, batch_size, capacity,
  min_after_dequeue, keep_input, seed=None,
  enqueue_many=False, shapes=None,
  allow_smaller_final_batch=False, shared_name=None,
  name=None)

例:

import tensorflow as tf 
 
 
filenames = ['A.csv', 'B.csv', 'C.csv'] 
# 生成一個先入先出隊列和一個 QueueRunner,生成文件名隊列
filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 
 
 
# 定義 Reader
reader = tf.TextLineReader() 
key, value = reader.read(filename_queue) 
 
 
#定義了多個 Decoder, 每個 Decoder 跟一個 Reader 相連, 即有多個 Reader
example_list = [tf.decode_csv(value, record_defaults=[['null'], ['null']])
         for _ in range(2)] # Decoder 和 Reader 為 2
   
# 使用tf.train.batch_join() 會為 graph 添加一個樣本隊列和一個 QueueRunner。 
# 經過多個 Reader 讀取文件和 Decoder 解碼后數據會進入這個隊列,再批量出隊。   
# 使用 tf.train.batch_join(), 可以使用多個 Reader 并行讀取數據。每個 Reader 使用一個線程
example_batch, label_batch = tf.train.batch_join(example_list, batch_size=5) 
with tf.Session() as sess: 
  coord = tf.train.Coordinator() 
  threads = tf.train.start_queue_runners(coord=coord) 
  for i in range(10): 
    e_val,l_val = sess.run([example_batch,label_batch]) 
    print e_val,l_val 
  coord.request_stop() 
  coord.join(threads)

感謝各位的閱讀!關于“Tensorflow如何設置多線程”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诏安县| 阿拉善左旗| 察隅县| 芒康县| 察哈| 黎城县| 独山县| 抚州市| 房山区| 平远县| 新野县| 基隆市| 公主岭市| 开远市| 大名县| 梁平县| 蓝田县| 乌苏市| 乌拉特后旗| 合山市| 曲阜市| 林西县| 苏尼特右旗| 含山县| 呼玛县| 青冈县| 琼中| 聂拉木县| 盐边县| 诸城市| 抚远县| 赣榆县| 泸西县| 浏阳市| 元氏县| 八宿县| 苏尼特右旗| 平泉县| 沅陵县| 柞水县| 巴彦淖尔市|