我是Keras的新手,我正在尝试制作分类模型,这是我的模型:
model = Sequential()
model.add(Dense(86, activation='sigmoid', input_dim=21))
model.add(Dense(50, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='nadam', metrics=['accuracy'])
但它总是给我这个错误:
^{pr2}$现在我知道我需要用一个热编码来编码我的标签,然后把它们压平,所以我也这么做了。在
oht_y_train = np_utils.to_categorical(y_train, num_classes=3)
oht_y_train = np.ndarray.flatten(oht_y_train)
但我还是犯了同样的错误。在
注意:在压平标签之前,我得到了同样的错误,只是形状是(5765,3)
我还打印了标签数组的形状,它给了我(17268,)
如果最后一层的输出维为1(用于二进制分类),则标签不应是一个热编码的。如果你有几个类,你应该使用一个热编码和一个
categorical_crossentropy
丢失函数,但是你的最终输出层应该有3维,即Dense(3)
,其中3是类的数量。你不应该在标签被编码后展平。在如果只需要执行二进制分类,那么最好使用}激活来规范0和1之间的输出。在
^{pr2}$binary_crossentropy
丢失并具有输出维度1,使用Dense(1)
和sigmoid
或{相关问题 更多 >
编程相关推荐