У меня есть код тензорного потока, который использует tf.train.shuffle_batch для обучающей части.Я прочитал некоторые форумы, и у меня появилась идея использовать эти строки для разделения между входным конвейером, который использует очереди, и частью вывода, которая должна использовать только одно изображение:
ima=queue_loader.images
is_just_one = tf.placeholder(dtype=bool,shape=(),name='is_just_one')
imgs = tf.placeholder(tf.float32, (1, height, width, 1), name='imgs')
images = tf.cond(is_just_one, lambda:imgs, lambda:ima)
, тогда я просто указываю в feed_dict is_just_oneЛожно во время моего обучения.Я сохраняю модель после каждой эпохи с помощью:
saver.save(sess, checkpoint_path, global_step=ep+1)
Получив файл контрольных точек, я запускаю код freeze.py следующим образом:
python freeze.py --model_dir=checkpoints --output_node_names=imgs,is_just_one,prediction
Затем: я пытаюсь восстановитьмоя модель с этим кодом:
imn=tf.placeholder(tf.float32, shape=(None,None,1))
imno=tf.image.per_image_standardization(imn)
X=io.imread("test.png")
with tf.Session() as sesss:
X=sesss.run(imno,feed_dict={imn:X[...,0,None]})
with tf.gfile.GFile("checkpoints/frozen_model.pb", "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
with tf.Graph().as_default() as graph:
tf.import_graph_def(graph_def,name='import')
for i in range(2):
with tf.Session(graph=graph,config=tf.ConfigProto(log_device_placement=True)) as sess:
act_map =graph.get_tensor_by_name("import/prediction:0")
is_just_one = graph.get_tensor_by_name("import/is_just_one:0")
inputs = graph.get_tensor_by_name("import/imgs:0")
mapp=sess.run(act_map,feed_dict={is_just_one:True,inputs:X[None,:,:,None]})
Когда я запускаю свой код, происходит следующее: он зависает навсегда, расположение устройства:
I tensorflow/core/common_runtime/simple_placer.cc:872] import/shuffle_batch/random_shuffle_queue: (RandomShuffleQueueV2)/job:localhost/replica:0/task:0/cpu:0
Итак, если я правильно понимаю, сохраненные данныеузел, связанный с tf.train.shuffle_batch, ждет входных данных, и, поскольку я его не кормил, он зависает навсегда.
что с этим не так?Есть ли способ игнорировать этот узел и просто подавать изображение на графике как обычно?
Большое спасибо за вашу драгоценную помощь