假设我已经阅读了文件名imgfiles_op
的张量及其对应的标签labels_op
,我可以看到带有batch_size文件名的打印件,后跟带有以下片段的batch_size标签:
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range(2):
print ("Batch= ", i)
pair = tf.convert_to_tensor([imgfiles_op, labels_op]).eval()
print ('imgfile=%s, label=%s' % (pair[0],
pair[1]))
coord.request_stop()
coord.join(threads)
我的问题是如何获得这种格式的照片:"<filename> <label>"
。
我没有得到以下工作,并且运行它只是挂起。我的想法是列出这样的对。所以&#39; pair_list
&#39;下面应该是batch_size的大小。
for i in range(2):
print ("Batch= ", i)
pair_list_op = tf.train.slice_input_producer([imgfiles_op, labels_op],
shuffle=False)
pair_list = sess.run(pair_list_op)
for p in pair_list:
print ('imgfile=%s, label=%s' % (p[0],
p[1]))
问题: 1.为什么第二个代码段会挂起?有没有一种好方法可以确保任何TF代码都不会挂起?这种效果令新TF用户感到沮丧。
谢谢!
答案 0 :(得分:2)
一种可能的解决方案可能是:
p1 = tf.constant(['f1','f2','f3'])
p2 = tf.constant(['1','0','1'])
p3 = tf.stack([p1, p2])
p4 = tf.stack([p1, p2],axis=1)
sess = tf.Session()
print(sess.run(p3))
print(sess.run(p4))
输出:
array([['f1', 'f2', 'f3'],
['1', '0', '1']], dtype=object)
array([['f1', '1'],
['f2', '0'],
['f3', '1']], dtype=object)
在第二种情况(p4)中,您可以看到文件名和标签可以按照您的指定显示。您可以使用axis = 1堆叠image_filenames和标签。
这对你有帮助吗??