TensorflowHub предварительно обучил MobileNetV2 изменить форму ввода и перенести обучение - PullRequest
1 голос
/ 20 января 2020

Я создаю NN, используя MobileNetV2 140 224 из Tensorflow Hub в качестве предварительно обученного контура vnet. Теперь я хотел бы изменить размер входного слоя, я хотел бы ввести изображения 500x500. Это возможно? Каков наилучший способ добиться этого?

Это мой код:

IMG_SHAPE = (224, 224, 3)
base_model = hub.KerasLayer('https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/feature_vector/4', input_shape=IMG_SHAPE)
base_model.trainable = False
model = Sequential([
  base_model,
  Dropout(0.25),
  Dense(3, activation='softmax')
])
adam = Adam(learning_rate=0.0001)
model.compile(optimizer=adam,
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

Могу ли я сделать это только путем изменения IMG_SHAPE = (500, 500, 3) или мне нужно добавить входные слои или что-то еще?

1 Ответ

2 голосов
/ 20 января 2020

Изменение IMG_SHAPE по мере того, как вы предлагаете, приводит к информативному сообщению об ошибке (сокращенно):

  ValueError: Could not find matching function to call loaded from the SavedModel. Got:
      Positional arguments (4 total):
        * Tensor("inputs:0", shape=(None, 500, 500, 3), dtype=float32)
        ...

    Expected these arguments to match one of the following 4 option(s):

    Option 1:
      Positional arguments (4 total):
        * TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name='inputs')
        ...

Получается https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/feature_vector/4 с размером входного сигнала, жестко привязанным к 224x224. Это связано с ограничением базового кода TF-Slim, для которого требуется tf.Placeholder известной высоты и ширины для построения SavedModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...