张量流可以在训练中动态地将文件添加到FIFOQueue中

卡佩默

我已经测试过这样的代码:



    # filename_queue comes from tf.train.string_input_producer
    features, labels, filename_queue = read_batch_data(file_list, 10)
    with tf.Session() as sess:
        init = tf.initialize_all_variables()
        sess.run(init)
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(sess=sess, coord=coord)
        counter = 0
        try:
            while not coord.should_stop():
                counter = counter + 1
                value = features.eval()
                if counter % 1000 == 0:
                    # check whether new data has been inserted into the queue
                    print counter, sum(value)
                    index = (counter / 1000) % 3
                    enqueue_op = filename_queue.enqueue(['a%d.csv' % index])
                    sess.run([enqueue_op])
         except tf.errors.OutOfRangeError
             ...

但是看起来该图仍然使用原始文件队列,并且从不读取新数据。

雅罗斯拉夫·布拉托夫(Yaroslav Bulatov)

我怀疑您有一个带有旧名称集的大型预取缓冲区,因此当您添加新文件名时,只有在预取缓冲区用尽后才能看到它。默认情况下,tf.string_input_producer将在名称集中无限循环,并且将填充size的预取缓冲区32

如果要修改列表,则使用aFIFOQueue并手动将其填充到示例中会比较容易,而不是string_input_producer.小心不要提供足够的示例并挂起主线程,可能要config.operation_timeout_in_ms=5000为您的会话进行设置

例如,以下示例一次来自/ temp / pipeline / 0文件的条目(文件中有10个条目),之后它将打印来自/ temp / pipeline / 1的条目

创建一些测试数据

def dump_numbers_to_file(fname, start_num, end_num):
  with open(fname, 'w') as f:
    for i in range(start_num, end_num):
      f.write(str(i)+"\n")
num_files=10
num_entries_per_file=10
file_root="/temp/pipeline"
os.system('mkdir -p '+file_root)
for fi in range(num_files):
  fname = file_root+"/"+str(fi)
  dump_numbers_to_file(fname, fi*num_entries_per_file, (fi+1)*num_entries_per_file)

帮助程序实用程序来创建会话

def create_session():
  """Resets local session, returns new InteractiveSession"""
  config = tf.ConfigProto(log_device_placement=True)
  config.gpu_options.per_process_gpu_memory_fraction=0.3 # don't hog all vRAM
  config.operation_timeout_in_ms=15000   # terminate on long hangs
  sess = tf.InteractiveSession("", config=config)
  return sess

运行你的例子

tf.reset_default_graph()
filename_queue = tf.FIFOQueue(capacity=10, dtypes=[tf.string])
enqueue_op = filename_queue.enqueue("/temp/pipeline/0")
sess = create_session()
sess.run(enqueue_op)
sess.run(enqueue_op)
# filename queue now has [/temp/pipeline/0, /temp/pipeline/0]
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
numeric_val, = tf.decode_csv(value, record_defaults=[[-1]])
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)

for i in range(10):
  print sess.run([numeric_val])

# filename queue now has [/temp/pipeline/0]
print 'size before', sess.run(filename_queue.size())
sess.run(filename_queue.enqueue("/temp/pipeline/1"))

# filename queue now has [/temp/pipeline/0, /temp/pipeline/1]
print 'size after', sess.run(filename_queue.size())

for i in range(10):
  print sess.run([numeric_val])

# filename queue now has [/temp/pipeline/1]

for i in range(10):
  print sess.run([numeric_val])

# filename queue is now empty, next sess.run([numeric_val]) would hang

coord.request_stop()
coord.join(threads)

你应该看到

[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
size before 1
size after 2
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以从Java动态地将方法添加到Groovy基本脚本中?

来自分类Dev

动态地将行添加到具有动态接收的列数的表中

来自分类Dev

Javafx如何动态地将内容添加到fxml文件中的现有选项卡

来自分类Dev

动态地将属性添加到指向字典中项目的Python类中

来自分类Dev

如何动态地将新数组添加到现有数组中

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

如何动态地将一个类添加到Selectize选项中?

来自分类Dev

如何动态地将ajax close listener添加到我的面板中?

来自分类Dev

动态地将列表项添加到ASP.NET中的选择标记

来自分类Dev

动态地将新属性添加到Node中的现有JSON数组

来自分类Dev

在Android中动态地将多个WebView添加到鳍状肢

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

动态地将xml布局添加到我当前的Activity布局中

来自分类Dev

如何动态地将继承的属性添加到EF数据存储中?

来自分类Dev

动态地将部件添加到kivy屏幕对象中

来自分类Dev

动态地将丢失的标签添加到损坏的HTML字符串中

来自分类Dev

在 Angular 中动态地将控件添加到 FormGroup

来自分类Dev

在php中动态地将css类添加到html元素

来自分类Dev

如何使用张量流中的QueueRunner将动态创建的输入图像添加到RandomShuffleQueue

来自分类Dev

在recyclerview中动态地将项目添加到列表中并复制到片段中的列表中

来自分类Dev

动态地将行添加到已在C#中的html中存在的表中

来自分类Dev

如何使用codeigniter中的会话动态地将新数组添加到现有数组中

来自分类Dev

可以动态地将部分添加到Matlab发布脚本吗?

来自分类Dev

如何动态地将Image添加到ImageView?

来自分类Dev

动态地将超链接添加到gridview

来自分类Dev

动态地将数据添加到QTableView

来自分类Dev

动态地将视图添加到布局

来自分类Dev

动态地将标签添加到JTabbedPane

来自分类Dev

动态地将属性添加到类

Related 相关文章

  1. 1

    是否可以从Java动态地将方法添加到Groovy基本脚本中?

  2. 2

    动态地将行添加到具有动态接收的列数的表中

  3. 3

    Javafx如何动态地将内容添加到fxml文件中的现有选项卡

  4. 4

    动态地将属性添加到指向字典中项目的Python类中

  5. 5

    如何动态地将新数组添加到现有数组中

  6. 6

    如何动态地将子级添加到expandableListview的特定组中?

  7. 7

    如何动态地将一个类添加到Selectize选项中?

  8. 8

    如何动态地将ajax close listener添加到我的面板中?

  9. 9

    动态地将列表项添加到ASP.NET中的选择标记

  10. 10

    动态地将新属性添加到Node中的现有JSON数组

  11. 11

    在Android中动态地将多个WebView添加到鳍状肢

  12. 12

    如何动态地将子级添加到expandableListview的特定组中?

  13. 13

    动态地将xml布局添加到我当前的Activity布局中

  14. 14

    如何动态地将继承的属性添加到EF数据存储中?

  15. 15

    动态地将部件添加到kivy屏幕对象中

  16. 16

    动态地将丢失的标签添加到损坏的HTML字符串中

  17. 17

    在 Angular 中动态地将控件添加到 FormGroup

  18. 18

    在php中动态地将css类添加到html元素

  19. 19

    如何使用张量流中的QueueRunner将动态创建的输入图像添加到RandomShuffleQueue

  20. 20

    在recyclerview中动态地将项目添加到列表中并复制到片段中的列表中

  21. 21

    动态地将行添加到已在C#中的html中存在的表中

  22. 22

    如何使用codeigniter中的会话动态地将新数组添加到现有数组中

  23. 23

    可以动态地将部分添加到Matlab发布脚本吗?

  24. 24

    如何动态地将Image添加到ImageView?

  25. 25

    动态地将超链接添加到gridview

  26. 26

    动态地将数据添加到QTableView

  27. 27

    动态地将视图添加到布局

  28. 28

    动态地将标签添加到JTabbedPane

  29. 29

    动态地将属性添加到类

热门标签

归档