Существуют ли условия для создания пользовательских моделей с помощью класса tf.keras.models.Model ()? - PullRequest
0 голосов
/ 25 февраля 2020

Я работал над проектом по созданию модели детектора объекта, основанной на двух известных структурах, ResNet101 и EfficinetDet. Что я сейчас делаю, так это выясняю, как извлечь карты выходных объектов из определенных 5 слоев конвоя (принадлежат ResNet101) с учетом входного изображения. Конечно, я уже пробовал несколько кодов, следуя Guidlines на tenorflow.org, но проблема в том, что появляется одно и то же TypeError:

'TypeError: объект типа' BatchNormalization 'не имеет len ()'

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

import tensorflow as tf
from tensorflow import keras
from keras import models

input_shape=(32,32,3)

model=tf.keras.applications.ResNet101(weights='imagenet',
                                     include_top=False,
                                     input_shape=input_shape)

model.save('resnet101_conv.h5')


resnet101=keras.models.load_model('resnet101_conv.h5',compile=False)
resnet101.trainable=False

layers_name=['conv1_relu',
            'conv2_block3_add', 
            'conv2_block3_out',
            'conv3_block4_out',
            'conv4_block23_out',
            'conv5_block3_out']


layer_list=[resnet101.get_layer(name) for name in layers_name]

layer_outputs=[layer.output for layer in layer_list]
activation_model=models.Model(inputs=resnet101.input, outputs=layer_outputs)

Кроме того, эти выбранные слои в layer_name расположены не по порядку. Между ними есть много слоев конвоя, пулов слоев, слоев BatchNormalization и слоев Add.

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