Я работал над проектом по созданию модели детектора объекта, основанной на двух известных структурах, 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.