Загрузка модели в качестве входного слоя и всей модели без каких-либо деталей - PullRequest
1 голос
/ 20 февраля 2020

Буду признателен, если кто-нибудь поможет мне с моей проблемой. Я обучил и сохранил модель. Затем я хочу загрузить его снова и сделать его невосстановимым. Однако, когда я загружаю его, он показывает только входной слой плюс модель в качестве подмножества. Вот мое резюме:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 9)]               0         
_________________________________________________________________
FORWARD (Model)              (None, 65, 6)             459486    
=================================================================
Total params: 459,486
Trainable params: 459,486
Non-trainable params: 0
_________________________________________________________________

, и это часть кода, когда я его загружаю:

if trained_model_path is not None:
    model = tf.keras.models.load_model(trained_model_path,
                                       custom_objects={'BilinearUpsampling1D':BilinearUpsampling1D})
    model.trainable = False

Во-первых, я хочу знать, почему у меня нет подробного резюме моей загруженной модели, которая сохраняется с помощью простой команды model_save.

Во-вторых, когда я устанавливаю свои переменные как непереносимые, в сводке будет показано, что у меня есть двойное количество параметров, половина из которых обучаема и другая половина не выглядит следующим образом:

_________________________________________________________________
Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 9)]               0         
_________________________________________________________________
FORWARD (Model)              (None, 65, 6)             459486    
=================================================================
Total params: 918,972
Trainable params: 459,486
Non-trainable params: 459,486
_________________________________________________________________

Я полагаю, что это происходит из-за того, что моя загруженная модель здесь является подмоделью оригинальной. Тем не менее, я понятия не имею. Пожалуйста, дайте мне знать, если кто-то может помочь мне в этом.

Большое вам спасибо. С уважением,

PS Я использую тензор потока 2.

1 Ответ

0 голосов
/ 13 марта 2020

Не уверен, что это убедительный обходной путь, но если мы используем model.compile() после model.trainable = False, он отображает правильное количество общего количества параметров.

Пожалуйста, найдите рабочий код ниже:

!pip install tensorflow==2.1

import tensorflow as tf

from zipfile import ZipFile
zip_file = ZipFile('Resume_Classification_Model.zip', 'r')
zip_file.extractall('Resume_Classification_Model')

New_Model = tf.keras.models.load_model("Resume_Classification_Model/Resume_Classification_Model/1")

New_Model.summary()

New_Model = tf.keras.models.load_model("Resume_Classification_Model/Resume_Classification_Model/1")

New_Model.trainable= False

New_Model.compile()

# Now, observe the Total Number of Parameters
New_Model.summary()

Чтобы оставаться в курсе об этом, вы можете сослаться на это Github Issue .

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