如何在tensorflow中生成VGG16多功能

如何在tensorflow中生成VGG16多功能,tensorflow,model,Tensorflow,Model,我想在VGG16中获得多个功能,并在build()中编写代码,如: # ... # ch=256 self.front_feature = tf.keras.models.Sequential([ vgg16.get_layer("input_1"), # Original size vgg16.get_layer("block1_conv1"), vgg16.get_layer("block1_conv2"),

我想在VGG16中获得多个功能,并在
build()
中编写代码,如:

      # ...
      # ch=256
      self.front_feature = tf.keras.models.Sequential([
        vgg16.get_layer("input_1"),
        # Original size
        vgg16.get_layer("block1_conv1"), vgg16.get_layer("block1_conv2"), vgg16.get_layer("block1_pool"),
        # Original size / 2
        vgg16.get_layer("block2_conv1"), vgg16.get_layer("block2_conv2"), vgg16.get_layer("block2_pool"),
        # Original size / 4
        vgg16.get_layer("block3_conv1"), vgg16.get_layer("block3_conv2"), vgg16.get_layer("block3_conv3"), 
        # Original size / 4
        vgg16.get_layer("block3_pool"),
        # Original size / 8
        ],
        name=self.feature_layer_name+'_front'
      )
      # ch=512
      self.l4_feature = tf.keras.models.Sequential([
        # Original size / 8
        vgg16.get_layer("block4_conv1"), vgg16.get_layer("block4_conv2"), vgg16.get_layer("block4_conv3"),
        # Original size / 8
        ],
        name=self.feature_layer_name+'_L4'
      )
      self.l4_pool = tf.keras.models.Sequential([
        # Original size / 8
        vgg16.get_layer("block4_pool"),
        # Original size / 16
        ],
        name=self.feature_layer_name+'_L4_pooling'
      )
      # ch=512
      self.l5_feature = tf.keras.models.Sequential([
        # Original size / 16
        vgg16.get_layer("block5_conv1"), vgg16.get_layer("block5_conv2"), vgg16.get_layer("block5_conv3"),
        # Original size / 16
        ],
        name=self.feature_layer_name+'_L5'
      )
      self.l5_pool = tf.keras.models.Sequential([
        # Original size / 16
        vgg16.get_layer("block5_pool"),
        # Original size / 32
        ],
        name=self.feature_layer_name+'_L5_pooling'
      )
但这有点愚蠢,所以我尝试将其写入一个模型对象,如:

  vgg16=tf.keras.applications.VGG16(weights='imagenet', include_top=False)
  self.feature_model_t = tf.keras.Model(
        inputs=vgg16.input,
        outouts=[
          vgg16.get_layer('block3_pool').output,
          vgg16.get_layer('block4_conv3').output,
          vgg16.get_layer('block4_pool').output,
          vgg16.get_layer('block5_conv3').output
        ],
      )
然后我运行代码,但是

TypeError:('Keyword argument not Understanding:','inputs')


如何修复它?

请确保已安装最新版本的TensorFlow

如果TensorFlow 2.1出现这种情况,请降级到TensorFlow 2.0。此外,如果您安装了Keras,您可以卸载它,因为您从TensorFlow内部使用Keras

编辑:如果问题仍然存在,请确保将正确的参数传递给参数输入(提示:检查是否正确检索VGG16的输入)


此外,由于“
out
”中的输入错误,您也会遇到问题;请重命名为
outputs

我测试了2.0.0和2.1.0,相同的问题类型错误:('Keyword argument not Understanding:','inputs')。您是否将VGG16的正确输入传递给输入?如果答案解决了您的问题,也请向上投票,谢谢。