Я пытаюсь использовать обнаружение для фильтрации большого набора данных, поэтому я хочу использовать tf.data.Dataset
, чтобы изображения можно было группировать и затем выводить в пакетном режиме, у меня был файл модели .pb
, и мой обычный вывод в один кадр: 1 загрузить файл .pb в график
with tf.gfile.GFile(pb_path, 'rb') as f:
graph_def = tf.GraphDef()
# Parses a serialized binary message into the current message.
graph_def.ParseFromString(f.read())
# Import a serialized TensorFlow `GraphDef` protocol buffer
# and place into the current default `Graph`.
_ = tf.import_graph_def(graph_def, name='')
2 3 выходных тензора, соответствующих ограничительной рамке, баллу, результату надписи и входному тензору для изображения:
input_tensor = sess.graph.get_tensor_by_name('input_1:0')
output_tensor1 = sess.graph.get_tensor_by_name('output_1:0')
output_tensor2 = sess.graph.get_tensor_by_name('output_2:0')
output_tensor3 = sess.graph.get_tensor_by_name('output_3:0')
3 Затем я использую sess.run()
с feed_dict
для вывода:
results = sess.run([output_tensor1, output_tensor2, output_tensor3], {input_tensor: [image]}
Однако я заметил, что tf.data.Dataset
обычно использовал iterator
в sess.run()
, например:
dataset = tf.data.Dataset.from_tensor_slices((tf.constant(image_names)))
op = dataset.make_one_shot_iterator().get_next()
sess.run(op, feed_dict)
ТАК, как я могу отредактировать код в этой части sess.run()
, чтобы он работал в моей задаче обнаружения? Я не знаю, как переключить output_tensors
на iterators
В Pytorch легко использовать Dataloader
API и собирать образцы изображений в наборе данных, так что насчет TF?