Объект 'KerasLayer' не имеет атрибута 'layer' - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь настроить модель, взятую из tf hub, но не могу получить доступ к слоям со следующей ошибкой У объекта 'KerasLayer' нет атрибута 'layer'

Вот мой код в качестве примера:

import tensorflow_hub as hub

from tensorflow.keras import layers

feature_extractor_url = "https://tfhub.dev/tensorflow/efficientnet/lite0/feature-vector/1" 

base_model = hub.KerasLayer(feature_extractor_url,
                                         input_shape=(224,224,3))

base_model.trainable = True


import tensorflow
from tensorflow.keras.models import Model

x =  base_model.layers[-10].output
x = tensorflow.keras.layers.Conv2D(4, (3, 3), padding="same", activation="relu")(x)
x = tensorflow.keras.layers.GlobalMaxPooling2D()(x)
x = tensorflow.keras.layers.Flatten()(x)
outputs = tensorflow.keras.layers.Activation('sigmoid', name="example_output")(x)

model = Model(base_model.input, outputs=outputs)

model.summary()

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-43-0501ec56d6c4> in <module>()
     14 from tensorflow.keras.models import Model
     15 
---> 16 x =  base_model.layers[-10].output
     17 x = tensorflow.keras.layers.Conv2D(4, (3, 3), padding="same", activation="relu")(x)
     18 x = tensorflow.keras.layers.GlobalMaxPooling2D()(x)

AttributeError: 'KerasLayer' object has no attribute 'layers'

То, что я пробовал: я построил модель с использованием последовательного API:

model = tf.keras.Sequential([
  base_model,
  layers.Dense(image_data.num_classes)
])

model.summary()

Но все же я не могу получить доступ к слоям внутри base_model.

Как мне получить доступ к слоям из KerasLayer?

Спасибо!

1 Ответ

1 голос
/ 16 марта 2020

Внутренняя структура SavedModel, загруженная в хаб. KerasLayer недоступен. Для этого уровня детализации вам придется обратиться к исходному коду Efficien tNet.

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