ValueError: Error when checking target: expected activation_6 to have shape (2,) but got array with shape (1,)

小叙:最近测试图像分类算子,发现出现了上述的错误,一开始以为数据格式出现了问题,比如图片通道不同导致的等等,到最后定位到了代码数据处理上

原因:keras激活层需要维度为2,但是只有一列内容

是因为这个算子在图像标签做独热编码处理的时候,直接调用第三方库LabelBinarizer,而二分类的标签经过fit_transform是不会独热的,但是多分类的时候就会独热成功,对二分类不是很友好

from sklearn.preprocessing import LabelBinarizer
label_arr = [0 0 0 1 1 1] lb
= LabelBinarizer() trainY = lb.fit_transform(label_arr) print('trainY=',trainY)
#trainY = [[0]
       [0]
       [0]
       [1]
       [1]
       [1]]

解决办法:

from keras.utils import to_categorical
label_arr = [0 0 0 1 2 3]
lb = LabelBinarizer()
trainY = to_categorical(label_arr)
print('trainY=',trainY)
#trainY = [[1 0 0 0]
       [1 0 0 0]
       [1 0 0 0]
       [0 1 0 0]
       [0 0 1 0]
       [0 0 0 1]]

 

posted @ 2022-01-19 14:46  Mr·Li程序员  阅读(459)  评论(0编辑  收藏  举报