使用tensorflow中心创建新的tensorflow图像分类模块

时间:2018-08-06 04:15:45

标签: tensorflow-hub

我是tensorflow的新手,我试图创建新的图像分类模块,我在下面的示例中使用tensorflow hub进行了尝试。但它不是创建的。是创建图像分类模块的任何简单示例

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

def module_fn():
    inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
    layer1 = tf.layers.dense(inputs, 200)
    layer2 = tf.layers.dense(layer1, 100)
    outputs = dict(default=layer2, hidden_activations=layer1)
    # Add default signature.
    hub.add_signature(inputs=inputs, outputs=outputs)

spec = hub.create_module_spec(module_fn)
module=hub.Module(spec)
with tf.Graph().as_default():
      module=hub.Module('new_test_module')
      test=module(np.random.normal(0, 1, (1, 100)))
      with tf.Session() as session:
      img=session.run(test)

1 个答案:

答案 0 :(得分:1)

TensorFlow Hub image classification modules是一些示例集合,展示了如何使用模型组件。要自己创建图像分类组件,可以查看 TensorFlow Hub API指南Creating a New Module部分。

使用率示例:

  

要定义新模块,发布者使用功能hub.create_module_spec()调用module_fn。此函数使用tf.placeholder()来表示由调用者提供的输入,从而构造表示模块内部结构的图形。然后,它通过调用hub.add_signature(name, inputs, outputs)一次或多次来定义签名。

def module_fn():
    inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
    layer1 = tf.layers.dense(inputs, 200)
    layer2 = tf.layers.dense(layer1, 100)
    outputs = dict(default=layer2, hidden_activations=layer1)

    # Add default signature.
    hub.add_signature(inputs=inputs, outputs=outputs)
spec = hub.create_module_spec(module_fn)
  

可以使用hub.create_module_spec()的结果而不是路径来实例化特定TensorFlow图内的模块对象。在这种情况下,没有检查点,模块实例将使用变量初始值设定项代替。