InvalidArgumentError: Несовместимые фигуры: [10,7] против [10] [[{{метрики узла / соотв. / Равно)}]] - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в области глубокого обучения и библиотеки Keras, я пытаюсь использовать учебник Адриана Роузброка (Обнаружение COVID-19 в рентгеновских изображениях), использовать двоичную классификацию. Мой объект тренируется для более чем двух классов. Я внес некоторые изменения, чтобы применить классификацию категорий. (7 классов по выявлению эмоций на лице). Недавно я опубликовал сообщение об ошибке, полученной при обучении: ссылка

, и я решил ее, но у меня есть еще одна ошибка:

вывод формы меток и формы данных :

(981, 7, 2) # labels shape (981, 224, 224, 3) # data shape

Я пытаюсь обучить набор данных с помощью этого сценария (после применения некоторых изменений).

INIT_LR = 1e-3
EPOCHS = 100
BS = 10

print("[INFO] loading images...")
imagePaths = list(paths.list_images(args["dataset"]))
data = []
labels = []

for imagePath in imagePaths:
    label = imagePath.split(os.path.sep)[-2]
    image = cv2.imread(imagePath)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image = cv2.resize(image, (224, 224))
    data.append(image)
    labels.append(label)

data = np.array(data) / 255.0
labels = np.array(labels)

stratifylabels=np.array(labels)
lb = LabelBinarizer()
labels = lb.fit_transform(labels)
labels = to_categorical(labels) # line 77
print(labels.shape)
print(data.shape)

(trainX, testX, trainY, testY) = train_test_split(data, labels,
    test_size=0.20, random_state=42,)

trainAug = ImageDataGenerator(
rotation_range=15,
fill_mode="nearest")

baseModel = VGG16(weights="imagenet", include_top=False,
    input_tensor=Input(shape=(224, 224, 3)))

headModel = baseModel.output
headModel = AveragePooling2D(pool_size=(4, 4))(headModel)
headModel = Flatten(name="flatten")(headModel)
headModel = Dense(64, activation="relu")(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(7, activation="softmax")(headModel)

model = Model(inputs=baseModel.input, outputs=headModel)
for layer in baseModel.layers:
layer.trainable = False
print("[INFO] compiling model...")
opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
model.compile(loss="categorical_crossentropy", optimizer=opt,
metrics=["accuracy"])

У меня есть эта ошибка:

Traceback (последний вызов был последним): файл "train_mask.py", строка 130, в эпохах = EPOCHS) тензор потока. python .framework.errors_impl.InvalidArgumentError: Несовместимые формы: [10,7 ] против [10] [[{{метрики узла / соотв. / равные}}]] [[{{узел> ConstantFoldingCtrl / loss / density_1_loss / broadcast_weights / assert_broadcastable / AssertGuard / Switch_0}}]]

Примечание: когда я комментирую строку 77, тренировка работает нормально, но результаты очень плохи с точностью = 1.2xx

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете оставить строку 77 и изменить функцию компиляции с:

model.compile(loss="categorical_crossentropy", optimizer=opt,metrics=["categorical_accuracy"])

или удалить строку 77 и изменить функцию компиляции на:

model.compile(loss="sparse_categorical_crossentropy", optimizer=opt,metrics=["sparse_categorical_accuracy"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...