代码之家  ›  专栏  ›  技术社区  ›  John Fisher

Keras多标签分类“to\u categorical”错误

  •  1
  • John Fisher  · 技术社区  · 7 年前

    接收

    索引器:索引3超出大小为3的轴1的界限

    当尝试使用Keras to\u categorical对输出向量创建一个热编码时。 Y.shape = (178,1) . 请帮助(:

    import keras
    from keras.models import Sequential
    from keras.layers import Dense
    import numpy as np
    
    # number of wine classes
    classifications = 3
    
    # load dataset
    dataset = np.loadtxt('wine.csv', delimiter=",")
    X = dataset[:,1:14]
    Y = dataset[:,0:1]
    
    # convert output values to one-hot
    Y = keras.utils.to_categorical(Y, classifications)
    
    # creating model
    model = Sequential()
    model.add(Dense(10, input_dim=13, activation='relu'))
    model.add(Dense(15, activation='relu'))
    model.add(Dense(20, activation='relu'))
    model.add(Dense(classifications, activation='softmax'))
    
    # compile and fit model
    model.compile(loss="categorical_crossentropy", optimizer="adam", 
    metrics=['accuracy'])
    
    model.fit(X, Y, batch_size=10, epochs=10)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Marcin Możejko    7 年前

    问题在于 wine 标签来自范围 [1, 3] to_categorical 索引来自的类 0 . 这会在标记时出错 3 to\u分类 将此索引视为实际的第四类-与您提供的类数不一致的内容。最简单的修复方法是从枚举标签开始 0 签署人:

    Y = Y - 1