Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从现有的冻结pb模型文件创建新的tensorflow hub模块_Tensorflow_Tensorflow Hub - Fatal编程技术网

如何从现有的冻结pb模型文件创建新的tensorflow hub模块

如何从现有的冻结pb模型文件创建新的tensorflow hub模块,tensorflow,tensorflow-hub,Tensorflow,Tensorflow Hub,我正在尝试将现有的冻结Tensorflow模型转换为Tensorflow_hub模块,用于图像分类传输学习,转换过程没有错误,但新模块的推理精度很低,只有40%~50%,我在这里缺少什么 我正在使用Tensorflow hub git存储库中的图像分类传输示例代码“retain.py”。“retain.py”脚本使用Tensorflow hub模块作为输入,因此我从“”下载了一个冻结的预训练模型,并将其转换为hub模块,然后使用此新模块作为重新训练脚本的输入。我的设置是ubuntu14.04、p

我正在尝试将现有的冻结Tensorflow模型转换为Tensorflow_hub模块,用于图像分类传输学习,转换过程没有错误,但新模块的推理精度很低,只有40%~50%,我在这里缺少什么

我正在使用Tensorflow hub git存储库中的图像分类传输示例代码“retain.py”。“retain.py”脚本使用Tensorflow hub模块作为输入,因此我从“”下载了一个冻结的预训练模型,并将其转换为hub模块,然后使用此新模块作为重新训练脚本的输入。我的设置是ubuntu14.04、python2.7、Tensorflow-1.12和Tensorflow-hub-0.4.0

import tensorflow as tf
import tensorflow_hub as hub
import numpy as np

MODEL="mobilenet_v1_1.0_224/mobilenet_v1_1.0_224_frozen.pb"
MODULE_PATH="output_hub"

def module_fn():
    input_name="input:0"
    output_name="MobilenetV1/Predictions/Reshape_1:0"
    with tf.gfile.GFile(MODEL, 'rb') as f:
        graph_def=tf.GraphDef()
        graph_def.ParseFromString(f.read())
        input_tensor = tf.placeholder(tf.float32, [None, 224,224, 3])
        output_tensor, = tf.import_graph_def(graph_def, input_map = {input_name: input_tensor}, return_elements=[output_name])
        hub.add_signature(inputs = {"images": input_tensor}, outputs = output_tensor)

spec = hub.create_module_spec(module_fn)
with tf.Graph().as_default():
    module = hub.Module(spec)
    input = np.random.normal(0, 1, (1, 224, 224, 3))
    output = module(input)
    with tf.Session() as session:
        session.run(output)
        module.export(MODULE_PATH, session=session)

spec = hub.load_module_spec(MODULE_PATH)
height, width = hub.get_expected_image_size(spec)
with tf.Graph().as_default() as graph:
    module = hub.Module(spec)
    input_tensor = tf.placeholder(tf.float32, [None, height, width, 3])
    output_tensor = module(input_tensor)
    with tf.Session() as session:
        for node in graph.as_graph_def().node:
            print(node.name)

您可以直接使用并保存手动转换。retain.py将在退出时为您冻结生成的模型

也就是说,还有更新的版本,它甚至可以进行微调,但它使用TensorFlow 2,并且两者仍在预览中。

您可以直接使用并保存手动转换。retain.py将在退出时为您冻结生成的模型

这就是说,还有一款更新版甚至可以进行微调,但它使用的是TensorFlow 2,而且两者仍在预览中。

面临着一个非常类似的问题(Mobilenet V2)。我的准确度下降不是很严重,但仍然会发生。有什么消息吗?面临一个非常类似的问题(Mobilenet V2)。我的准确度下降不是很严重,但仍然会发生。有消息吗?