模块“keras.applications.imagenet_utils”在 Kaggle 中没有属性“ois”

问题描述

我正在尝试在 kaggle 上没有互联网的情况下使用 VGG16 :

要使用 keras-applications 我已经:

!pip install ../input/kerasapplications/Keras_Applications-1.0.8-py3-none-any.whl

from keras_applications.imagenet_utils import _obtain_input_shape as ois

使用像:

model = VGG16(include_top = True)

VGG16 定义:

def VGG16(
    include_top=True,weights='../input/cassavaleafdiseasevgginference/vgg16_weights_tf_dim_ordering_tf_kernels.h5',input_tensor=None,input_shape=None,pooling=None,classes=1000,classifier_activation='softmax'):
    
    input_shape = imagenet_utils.ois(
      input_shape,default_size=224,min_size=32,data_format=backend.image_data_format(),require_flatten=include_top,weights=weights)

    if input_tensor is None:
        img_input = Input(shape=input_shape)
    else:
        if not backend.is_keras_tensor(input_tensor):
            img_input = Input(tensor=input_tensor,shape=input_shape)
        else:
            img_input = input_tensor
    
  # Block 1
    x = Conv2D(
      64,(3,3),activation='relu',padding='same',name='block1_conv1')(
          img_input)
    x = Conv2D(
      64,name='block1_conv2')(x)
    x = MaxPooling2D((2,2),strides=(2,name='block1_pool')(x)

  # Block 2
    x = Conv2D(
      128,name='block2_conv1')(x)
    x = Conv2D(
      128,name='block2_conv2')(x)
    x = MaxPooling2D((2,name='block2_pool')(x)

  # Block 3
    x = Conv2D(
      256,name='block3_conv1')(x)
    x = Conv2D(
      256,name='block3_conv2')(x)
    x = Conv2D(
      256,name='block3_conv3')(x)
    x = MaxPooling2D((2,name='block3_pool')(x)

  # Block 4
    x = Conv2D(
      512,name='block4_conv1')(x)
    x = Conv2D(
      512,name='block4_conv2')(x)
    x = Conv2D(
      512,name='block4_conv3')(x)
    x = MaxPooling2D((2,name='block4_pool')(x)

  # Block 5
    x = Conv2D(
      512,name='block5_conv1')(x)
    x = Conv2D(
      512,name='block5_conv2')(x)
    x = Conv2D(
      512,name='block5_conv3')(x)
    x = MaxPooling2D((2,name='block5_pool')(x)

    if include_top:
    # Classification block
        x = Flatten(name='flatten')(x)
        x = Dense(4096,name='fc1')(x)
        x = Dense(4096,name='fc2')(x)

        imagenet_utils.validate_activation(classifier_activation,weights)
        x = Dense(classes,activation=classifier_activation,name='predictions')(x)
    else:
        if pooling == 'avg':
            x = GlobalAveragePooling2D()(x)
        elif pooling == 'max':
            x = GlobalMaxPooling2D()(x)

    if input_tensor is not None:
        inputs = layer_utils.get_source_inputs(input_tensor)
    else:
        inputs = img_input
  # Create model.
    model = training.Model(inputs,x,name='vgg16')

    model.load_weights(weights)

    return model

但是当我尝试使用 _obtain_input_shape 时,我得到: 模块“keras.applications.imagenet_utils”没有属性“ois”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)