我正在使用tensorflow的imageNet训练模型来提取最后一个合并层的特征作为新图像数据集的表示向量。
该模型在新图像上的预测如下:
python classify_image.py --image_file new_image.jpeg
我编辑了main函数,以便可以提取图像文件夹并一次返回所有图像的预测,并将特征向量写入csv文件中。这是我的方法:
def main(_):
maybe_download_and_extract()
#image = (FLAGS.image_file if FLAGS.image_file else
# os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))
#edit to take a directory of image files instead of a one file
if FLAGS.data_folder:
images_folder=FLAGS.data_folder
list_of_images = os.listdir(images_folder)
else:
raise ValueError("Please specify image folder")
with open("feature_data.csv", "wb") as f:
feature_writer = csv.writer(f, delimiter='|')
for image in list_of_images:
print(image)
current_features = run_inference_on_image(images_folder+"/"+image)
feature_writer.writerow([image]+current_features)
对于大约21张图像,它工作正常,但是由于以下错误而崩溃:
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1912, in as_graph_def
raise ValueError("GraphDef cannot be larger than 2GB.")
ValueError: GraphDef cannot be larger than 2GB.
我认为通过调用该方法run_inference_on_image(images_folder+"/"+image)
,以前的图像数据将被覆盖,仅考虑新的图像数据,似乎并非如此。如何解决这个问题?
这里的问题是,每次的调用都会run_inference_on_image()
将 节点 添加
到同一图中,最终会超过最大大小。至少有两种方法可以解决此问题:
一种 简单但缓慢的 方法是,对以下每个调用使用不同的默认图run_inference_on_image()
:
for image in list_of_images:
# …
with tf.Graph().as_default():
current_features = run_inference_on_image(images_folder+”/”+image)
# …
将 更多参与,但更有效 的方法是修改run_inference_on_image()
对多个图像运行。重新定位for
循环以围绕此sess.run()
调用,您将不再需要在每次调用时重建整个模型,这将使处理每个图像的速度大大提高。
问题内容: 从SavedModel Docs中 , SavedModel,TensorFlow模型的通用序列化格式。 和 SavedModel包装了一个TensorFlow Saver。Saver主要用于生成变量检查点。 据我了解,如果有人想使用TensorFlow Serving ,那是必须的。不过,我可以部署Tensorflow模型没有服务服务器:冻结图并将其导出为,和负载图形到会话中使用和创
问题内容: 因此,我一直在努力了解在Tensorflow中出于训练目的导出经过训练的模型时,serving_input_fn()的主要任务是什么。网上有一些例子可以解释它,但是我在为自己定义它时遇到了问题。 我要解决的问题是一个回归问题,其中有29个输入和一个输出。是否有用于为此创建相应的服务输入功能的模板?如果我使用一类分类问题怎么办?服务输入功能是否需要更改,或者我可以使用相同的功能? 最后,
我正在尝试安装Craftable,当我运行命令时,它抛出错误: 在StreamHandler.php第144行:stream_set_chunk_size():块大小不能大于2147483647 请帮我解决这个问题。
php artisan route:cache命令引发错误: stream_set_chunk_size():块大小不能大于2147483647 在供应商处/monolog/monolog/src/monolog/Handler/StreamHandler。菲律宾比索:144 请帮我解决这个问题
我一直在与TensorFlow的构建器进行斗争,以便能够为我的模型服务,我试图在为模型服务后向我的分类器提供数据 我的问题是如何向模型提供输入?我看过Google的inception教程使用的代码 并试图实施它 据我所知,输入被传递给一个名为serialized_tf_example的张量,顾名思义,该张量将输入序列化为string,但是他们使用我不理解的tf.fixedlenfeature,然后
我试图对一个模型执行预测,该模型是我使用“Finetuning AlexNet with TensorFlow”https://kratzert.github.io/2017/02/24/Finetuning-AlexNet-with-TensorFlow.html训练的 我在Python中使用保存了模型,并在Java中使用加载了模型。守则的主要部分是: 我得到了一个例外: 我看到上面的代码对一些