我可以将“ categorical_crossentropy”用作损失函数,而不会出现错误,但是当我将其替换为“ mse”时,会出现以下错误:
检查目标时出错:预期密集_2的形状为(2,),但数组的形状为(1,)
如果我使用以下方法
labels = np_utils.to_categorical(labels, num_classes = 2)
另一个错误引发:
受支持的目标类型为:(“二进制”,“多类”)。取而代之的是“ multilabel-indicator”。
问题是如何在cross_val_score()函数中使用“ mse”?
这是github link,这是麻烦的代码:
model = KerasClassifier(build_fn=customXceptionBuild, epochs=epochs, batch_size=batch_size)
kfold = StratifiedKFold(n_splits=folds, shuffle=True, random_state=random_state)
def classification_report_with_accuracy_score(y_true, y_pred):
originalclass.extend(y_true)
predictedclass.extend(y_pred)
return accuracy_score(y_true, y_pred) # return accuracy score
scoring = make_scorer(classification_report_with_accuracy_score)
scores = cross_val_score(model, data, labels, cv=kfold, error_score="raise", scoring=scoring )
customXceptionBuild函数实现Xception预训练模型,并使用“ mse”作为损失函数。
答案 0 :(得分:0)
第一个错误是关于输出大小不匹配的, 改变这个
move_uploaded_file
到
F3 = Dense(classes, activation='softmax')(D2)
由于这是二进制分类,因此您只需要1个神经元。
或者,如果您想解决第二个错误,这就是原因。无法对一键编码标签进行分层。分层后可以进行一种热编码。因此,
F3 = Dense(1, activation='softmax')(D2)
应该在
之后labels = np_utils.to_categorical(labels, num_classes = 2)