欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Tensorflow 多線程設(shè)置方式

 更新時(shí)間:2020年02月06日 08:49:30   投稿:jingxian  
今天小編就為大家分享一篇Tensorflow 多線程設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

一. 通過 ConfigProto 設(shè)置多線程

(具體參數(shù)功能及描述見 tensorflow/core/protobuf/config.proto)

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

1. intra_op_parallelism_threads 控制運(yùn)算符op內(nèi)部的并行
當(dāng)運(yùn)算符 op 為單一運(yùn)算符,并且內(nèi)部可以實(shí)現(xiàn)并行時(shí),如矩陣乘法,reduce_sum 之類的操作,可以通過設(shè)置 intra_op_parallelism_threads 參數(shù)來并行。

2. inter_op_parallelism_threads 控制多個(gè)運(yùn)算符op之間的并行計(jì)算
當(dāng)有多個(gè)運(yùn)算符 op,并且他們之間比較獨(dú)立,運(yùn)算符和運(yùn)算符之間沒有直接的路徑 Path 相連。Tensorflow會(huì)嘗試并行地計(jì)算他們,使用由 inter_op_parallelism_threads 參數(shù)來控制數(shù)量的一個(gè)線程池。
在第一次創(chuàng)建會(huì)話將設(shè)置將來所有會(huì)話的線程數(shù),除非是配置了 session_inter_op_thread_pool 選項(xiàng)。

3. session_inter_op_thread_pool 配置會(huì)話線程池。
如果會(huì)話線程池的 num_threads 為 0,使用 inter_op_parallelism_threads 選項(xiàng)。

二. 通過隊(duì)列進(jìn)行數(shù)據(jù)讀取時(shí)設(shè)置多線程

(具體函數(shù)功能及描述見 tensorflow/python/training/input.py)

1. 通過以下函數(shù)進(jìn)行樣本批處理時(shí),可以通過設(shè)置 num_threads 來設(shè)置單個(gè) 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'] 
# 生成一個(gè)先入先出隊(duì)列和一個(gè) QueueRunner,生成文件名隊(duì)列 
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() 會(huì)為 graph 添加一個(gè)樣本隊(duì)列和一個(gè) QueueRunner。 
# 經(jīng)過 Reader 讀取文件和 Decoder 解碼后數(shù)據(jù)會(huì)進(jìn)入這個(gè)隊(duì)列,再批量出隊(duì)。
# tf.train.batch() 這里只有一個(gè) Reader,可以設(shè)置多線程
 
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. 通過以下函數(shù)進(jìn)行樣本批處理時(shí),可以通過設(shè)置 Decoder 和 Reader 的個(gè)數(shù)來設(shè)置多 Reader 讀取,其中每個(gè) Reader 使用一個(gè)線程

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'] 
# 生成一個(gè)先入先出隊(duì)列和一個(gè) QueueRunner,生成文件名隊(duì)列
filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 
 
 
# 定義 Reader
reader = tf.TextLineReader() 
key, value = reader.read(filename_queue) 
 
 
#定義了多個(gè) Decoder, 每個(gè) Decoder 跟一個(gè) Reader 相連, 即有多個(gè) Reader
example_list = [tf.decode_csv(value, record_defaults=[['null'], ['null']])
         for _ in range(2)] # Decoder 和 Reader 為 2
   
# 使用tf.train.batch_join() 會(huì)為 graph 添加一個(gè)樣本隊(duì)列和一個(gè) QueueRunner。 
# 經(jīng)過多個(gè) Reader 讀取文件和 Decoder 解碼后數(shù)據(jù)會(huì)進(jìn)入這個(gè)隊(duì)列,再批量出隊(duì)。   
# 使用 tf.train.batch_join(), 可以使用多個(gè) Reader 并行讀取數(shù)據(jù)。每個(gè) Reader 使用一個(gè)線程
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 多線程設(shè)置方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟詳解

    PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟詳解

    這篇文章主要介紹了PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • django-allauth入門學(xué)習(xí)和使用詳解

    django-allauth入門學(xué)習(xí)和使用詳解

    這篇文章主要介紹了django-allauth入門學(xué)習(xí)和使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 在Django的URLconf中使用命名組的方法

    在Django的URLconf中使用命名組的方法

    這篇文章主要介紹了在Django的URLconf中使用命名組的方法,Django是Pyhton各色高人氣開發(fā)框架中最為著名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • 基于Python List的賦值方法

    基于Python List的賦值方法

    今天小編就為大家分享一篇基于Python List的賦值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python 編碼規(guī)范整理

    python 編碼規(guī)范整理

    這篇文章主要介紹了python 編碼規(guī)范整理,需要的朋友可以參考下
    2018-05-05
  • 淺談pandas用groupby后對(duì)層級(jí)索引levels的處理方法

    淺談pandas用groupby后對(duì)層級(jí)索引levels的處理方法

    今天小編就為大家分享一篇淺談pandas用groupby后對(duì)層級(jí)索引levels的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • PyQt5實(shí)現(xiàn)多張圖片顯示并滾動(dòng)

    PyQt5實(shí)現(xiàn)多張圖片顯示并滾動(dòng)

    最近要做個(gè)網(wǎng)頁圖片批量下載工具,然后需要一個(gè)頁面顯示網(wǎng)頁上的所有圖片供用戶勾選,再根據(jù)勾選的內(nèi)容來下載指定圖片,其中就涉及到要到同時(shí)顯示多張圖片,本文就來介紹一下
    2021-06-06
  • Python中對(duì)象的比較操作==和is區(qū)別詳析

    Python中對(duì)象的比較操作==和is區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Python中對(duì)象的比較操作==和is區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Selenium python時(shí)間控件輸入問題解決方案

    Selenium python時(shí)間控件輸入問題解決方案

    這篇文章主要介紹了Selenium python時(shí)間控件輸入問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python中的Function定義方法

    Python中的Function定義方法

    Python中,函數(shù)是可被重用的程序段。對(duì)于函數(shù)的定義,可以使用def關(guān)鍵字。
    2009-09-09

最新評(píng)論