代码之家  ›  专栏  ›  技术社区  ›  Eliethesaiyan

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

  •  2
  • Eliethesaiyan  · 技术社区  · 6 年前

    查看两个带有参数的函数签名

    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 从直觉上来说 tf.train.shuffle_batch 可以用多个线程或进程进行处理,但它们似乎做了几乎相同的工作。

    我在想,除了批处理的多处理之外,是否有一个基本的区别可以让人选择其中一个。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Olivier Dehaene    6 年前

    引用Shuffle_batch_join tf文档:

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

    基本上,shuffle_batch_join希望:

    • 接收张量列表
    • 对列表中的每个成员执行洗牌批处理
    • 返回一个张量列表,其数量和类型与张量列表[i]相同。

    请注意,如果使用shuffle_batch_join:

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

    Here is a link to the doc.