Передача обучения, неправильная форма плотного слоя - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь применить трансферное обучение к своему ANN для классификации изображений.Я нашел пример этого, и я бы персонализировал сеть.

Здесь есть основные блоки кода:

model = VGG19(weights='imagenet',
                  include_top=False,
                  input_shape=(224, 224, 3))
batch_size = 16

for layer in model.layers[:5]:
    layer.trainable = False

x = model.output
x = Flatten()(x)
x = Dense(1024, activation="relu")(x)
x = Dense(1024, activation="relu")(x)
predictions = Dense(16, activation="sigmoid")(x)

model_final = Model(input = model.input, output = predictions)

model_final.fit_generator(
train_generator,
samples_per_epoch = nb_train_samples,
epochs = epochs,
validation_data = validation_generator,
validation_steps = nb_validation_samples,
callbacks = [checkpoint, early])

Когда я запускаю код выше, я получаю эту ошибку:

ValueError: Error when checking target: expected dense_3 to have shape (16,) but got array with shape (1,).

Я полагаю, что проблема связана с порядком измерений в слое dense, я попытался транспонировать его, но получаю ту же ошибку.

1 Ответ

0 голосов
/ 13 февраля 2019

Может быть, этот простой пример может помочь:

import numpy as np

test = np.array([1,2,3])
print(test.shape) # (3,)

test = test[np.newaxis]
print(test.shape) # (1, 3)  

Попробуйте применить [np.newaxis] в вашем train_generator выводе.

...