Ошибка значения: фигуры (Нет, 21) и (Нет, 7, 7, 21) несовместимы.Python

Программы на Python
Ответить
Anonymous
 Ошибка значения: фигуры (Нет, 21) и (Нет, 7, 7, 21) несовместимы.

Сообщение Anonymous »

Я выполняю упражнение с моделью VGG16 с использованием Keras.
Я загрузил модель и теперь мне нужно заменить последние 3 полностью связанных слоя 3 новыми слоями: первые 2 из 50 и 20 нейронов соответственно с активацией ReLU и последний слой с соответствующим количеством нейронов.
Я сделал следующее:

Код: Выделить всё

# Freeze the weights of the pretrained model layers
for layer in base_model.layers:
layer.trainable = False

# Replace the last 3 fully connected layers with 3 new layers
x = base_model.output
x = Dense(50, activation='relu')(x)
x = Dense(20, activation='relu')(x)
x = Dense(num_classes, activation='softmax')(x)

# Create a new model by joining the base of VGG16 with the new layers
model = Model(inputs=base_model.input, outputs=x)
model.summary() выглядит следующим образом:

Код: Выделить всё

=================================================================

input_13 (InputLayer)       [(None, 224, 224, 3)]     0

block1_conv1 (Conv2D)       (None, 224, 224, 64)      1792

block1_conv2 (Conv2D)       (None, 224, 224, 64)      36928

block1_pool (MaxPooling2D)  (None, 112, 112, 64)      0

block2_conv1 (Conv2D)       (None, 112, 112, 128)     73856

block2_conv2 (Conv2D)       (None, 112, 112, 128)     147584

block2_pool (MaxPooling2D)  (None, 56, 56, 128)       0

block3_conv1 (Conv2D)       (None, 56, 56, 256)       295168

block3_conv2 (Conv2D)       (None, 56, 56, 256)       590080

block3_conv3 (Conv2D)       (None, 56, 56, 256)       590080

block3_pool (MaxPooling2D)  (None, 28, 28, 256)       0

block4_conv1 (Conv2D)       (None, 28, 28, 512)       1180160

block4_conv2 (Conv2D)       (None, 28, 28, 512)       2359808

block4_conv3 (Conv2D)       (None, 28, 28, 512)       2359808

block4_pool (MaxPooling2D)  (None, 14, 14, 512)       0

block5_conv1 (Conv2D)       (None, 14, 14, 512)       2359808

block5_conv2 (Conv2D)       (None, 14, 14, 512)       2359808

block5_conv3 (Conv2D)       (None, 14, 14, 512)       2359808

block5_pool (MaxPooling2D)  (None, 7, 7, 512)         0

dense_6 (Dense)             (None, 7, 7, 50)          25650

dense_7 (Dense)             (None, 7, 7, 20)          1020

dense_8 (Dense)             (None, 7, 7, 21)          441

=================================================================

Total params: 14,741,799
Trainable params: 27,111
Non-trainable params: 14,714,688
_________________________________________________________________
Когда я пытаюсь обучить модель, выдает следующую ошибку:

Код: Выделить всё

 ValueError: Shapes (None, 21) and (None, 7, 7, 21) are incompatible
В чем может быть проблема?

Подробнее здесь: https://stackoverflow.com/questions/759 ... compatible
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»