Я пробую два разных подхода.
- Первый - создать простой CNN с использованием слоев Conv2d и maxpooling и с использованием потери binary_crossentropy
- Второй - использовать Resnet или Inceptionv3
build_model = tf.keras.applications.inception_v3.InceptionV3(include_top=False, weights='imagenet', input_shape=(q_size, q_size, img_channel), backend=tf.keras.backend, layers=tf.keras.layers, models=tf.keras.models, utils=tf.keras.utils)
x = tf.keras.layers.GlobalAveragePooling2D()(build_model.output)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(128, activation='relu')(x)
x = tf.keras.layers.Dropout(0.2)(x)
out = tf.keras.layers.Dense(6, activation='sigmoid')(x)
model = tf.keras.models.Model(inputs=build_model.input, outputs=out)
model.compile(optimizer = tf.keras.optimizers.Adam(lr=1e-5), loss='binary_crossentropy', metrics=['binary_accuracy'])
predict = model.predict_generator(test_generator)
Первый работает гладко, без предупреждений и ошибок, но когда я использую resnet или inceptionv3, при прогнозировании данных теста я сталкиваюсь с предупреждением ниже:
/ opt / conda / lib / python3.6 / site-packages / ipykernellauncher.py: 53: RuntimeWarning: деление на ноль, встречающееся в truedivide
/ opt / conda /lib / python3.6 / site-packages / ipykernellauncher.py: 53: RuntimeWarning: недопустимое значение, встречающееся в truedivide
Форма тестового фрейма данных и фрейма прогнозов различна. Я думаю, что это из-за вышеупомянутого предупреждения. Я понятия не имею, как это исправить. Любая помощь будет оценена!