tf.train.shuffle_batch_join和tf.train.shuffle_batch之间的区别

时间:2018-07-11 03:37:30

标签: python python-3.x tensorflow machine-learning pipeline

使用参数查看两个函数签名

#relations: array:5 [▼
    "orders" => Collection {#442 ▼
      #items: array:2 [▼
        0 => Order {#446 ▶}
        1 => Order {#447 …25}
      ]
    }

tf.train.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
)

参数之间唯一的区别是tf.train.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 ) 直观地表示num_threads可以用多个线程或多个进程处理,除了它们似乎做着几乎相同的工作。

我想知道,除了批处理的多重处理之外,其他人是否可以选择一个而不是另一个。

1 个答案:

答案 0 :(得分:1)

shuffle_batch_join TF文档中的报价:

  

tensors_list参数是张量元组的列表或张量词典的列表。列表中的每个元素的处理方式都类似于tf.train.shuffle_batch()的张量参数。

基本上,shuffle_batch_join预期会:

  • 接收张量列表
  • 对列表的每个成员执行shuffle_batch
  • 返回张量列表,其数量和类型与tensors_list [i]相同。

请注意,如果您使用shuffle_batch_join:

  

len(tensors_list)线程将启动,线程i将tensors从tensors_list [i]中排队。 tensors_list [i1] [j]的类型和形状必须与tensors_list [i2] [j]匹配,如果enqueue_many为true,则在第一维上除外。

Here is a link to the doc.