Как сказано в названии, я создал простую двухклассную CNN с предварительно обученными весами VGG16 imagenet в качестве нижних слоев, все это с использованием Python с Keras. Сейчас я пытаюсь визуализировать процесс выбора функций с помощью генерации тепловой карты, но решения, которые, как мне кажется, я могу реализовать, разработаны для обычной модели из 1000 классов. Что мне делать, чтобы все заработало?
РЕДАКТИРОВАТЬ: Я включаю некоторые фрагменты кода, которые, на мой взгляд, могут иметь отношение:
#Loading vgc16 model
vgg16 = applications.VGG16(include_top=False, weights='imagenet')
#vgg16.summary()
start = datetime.datetime.now()
model = Sequential()
model.add(Flatten(input_shape=train_data.shape[1:]))
model.add(Dense(100))
model.add(LeakyReLU(alpha=0.03))
model.add(Dropout(0.5))
model.add(Dense(50))
model.add(LeakyReLU(alpha=0.03))
model.add(Dropout(0.3))
model.add(Dense(num_classes, activation='softmax'))
А ниже - обучающая часть, в которой используются нижние слои vgg16 для создания файлов функций из трех наборов данных:
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
history = model.fit(train_data, train_labels,
epochs=7,
batch_size=batch_size,
validation_data=(validation_data, validation_labels))
model.save(top_model_weights_path)
(eval_loss, eval_accuracy) = model.evaluate(
validation_data, validation_labels, batch_size=batch_size, verbose=1)