Мой CNN всегда получает один и тот же или похожий результат, независимо от того, - PullRequest
0 голосов
/ 29 апреля 2020

Я делаю классификацию по нескольким меткам, используя resnet50, предоставленный keras. Я добавил свой собственный плотный слой в resnet50 и выбрал сигмоид в качестве функции активации, а двоичную кросс-энтропию - в качестве функции потерь. Во время обучения это показывает, что точность составляет около 93%, что означает, что это не плохо. После тренировки я сохранил веса в виде файла h5. Но когда я загружаю файл весов h5 для прогнозирования, получается, что вывод почти всегда один и тот же, несмотря на входное изображение. Вот мой код для обучения.

batch = 100
input_tensor = Input(shape=(100, 100, 3))
base_model = ResNet50(weights=weight, include_top=False, pooling='max', input_tensor=input_tensor)
predictions = Dense(20, activation='sigmoid')(base_model.output)
model = Model(inputs=base_model.input, outputs=predictions)

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit_generator(get_train_data(batch_size=batch), steps_per_epoch=4900, epochs=1,
                    validation_data=get_val_data(batch_size=batch), validation_steps=5000)
cur = str(datetime.datetime.now())
h5_path = 'n_hot'+cur[:10]+'-'+cur[11:-10]+'.h5'
model.save_weights(h5_path)

Что касается данных обучения, то это изображения с меткой, выглядящие как 011001111. Я пытался установить больший размер партии, но ничего не улучшилось. Поэтому, пожалуйста, помогите мне с этой проблемой! Буду признателен, если кто-нибудь сможет мне помочь!

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