Проблема с точной настройкой, когда я использую «flow_from_dataframe»
Я без проблем использую CNN для классификации, используя следующий код (кратко!)
cnn_input = Input((128, 32,3))
cnn_output = Conv2D(32, (3, 3), padding='same', activation=LeakyReLU(alpha=0.01)) (cnn_input)
fc_input = Flatten() (cnn_output)
fc_input = Dense(128, activation=LeakyReLU(alpha=0.01)) (fc_input)
full_output = Dense(8, activation="softmax") (fc_input)
model = models.Model(inputs=cnn_input, outputs=full_output)
Но когда я использую предварительно обученную сеть (например, ResNet50 или VGG16) вместо используемого CNN, я получаю следующую ошибку.
from tensorflow.keras.applications import ResNet50
feature_extractor = ResNet50(weights='imagenet',
input_shape=(128, 32, 3),
include_top=False)
feature_extractor.trainable = False
input_ = tf.keras.Input(shape=(128, 32, 3))
x = feature_extractor(input_, training=False)
x = tf.keras.layers.Dense(128, activation='relu')(x)
output_ = tf.keras.layers.Dense(8, activation="softmax")(x)
model = tf.keras.Model(input_, output_)
Ошибка:
categorical_crossentropy
target.shape.assert_is_compatible_with(output.shape)
ValueError: Shapes (None, None) and (None, None, None, 8) are incompatible
Как это решить?
Я попытался использовать предварительно обученную CNN с помощью flow_from_dataframe, но получил неожиданную ошибку, которой не было в случае использования новой CNN, хотя все условия и код были теми же!