[我正在使用GridSearchCV训练Ann机器学习模型,并在gridSearchCV中陷入IndexError问题

问题描述 投票:-1回答:3

我的模型开始训练,在执行一段时间后出现错误:-IndexError:索引37在尺寸为37的轴0的范围之外]

它可以为我的模型正确执行,而无需使用带有固定参数的gridsearchCV

这是我的代码

    from keras.wrappers.scikit_learn import KerasClassifier
    from sklearn.model_selection import GridSearchCV
    from keras.models import Sequential
    from keras.layers import Dense
    def build_classifier(optimizer, nb_layers,unit):
        classifier = Sequential()
        classifier.add(Dense(units = unit, kernel_initializer = 'uniform', activation = 'relu', input_dim = 14))
        i = 1
        while i <= nb_layers:
            classifier.add(Dense(activation="relu", units=unit, kernel_initializer="uniform"))
            i += 1
        classifier.add(Dense(units = 38, kernel_initializer = 'uniform', activation = 'softmax'))
        classifier.compile(optimizer = optimizer, loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
        return classifier
    classifier = KerasClassifier(build_fn = build_classifier)
    parameters = {'batch_size': [10,25],
                  'epochs': [100,200],
                  'optimizer': ['adam'],
                  'nb_layers': [5,6,7],
                  'unit':[48,57,76]
                 }
    grid_search = GridSearchCV(estimator = classifier,
                               param_grid = parameters,
                               scoring = 'accuracy',
                              cv=5,n_jobs=-1)
    grid_search = grid_search.fit(X_train, y_train)
    best_parameters = grid_search.best_params_
    best_accuracy = grid_search.best_score_

我的模型开始训练,并且在执行一段时间后出现错误:-IndexError:索引37超出了轴0的尺寸37的范围。对于我的模型,它可以正确执行,而无需使用...

machine-learning keras scikit-learn neural-network
3个回答
0
投票
错误IndexError: index 37 is out of bounds for axis 0 with size 37表示您的对象中没有索引为37的元素。

0
投票
这是一个具有大量类(38个类)的多类分类器。似乎GridSearchCV没有通过分层抽样来划分数据集,可能是因为您没有足够的数据和/或数据集没有类别平衡。

0
投票
看看您的y_train的形状。它必须是某种形状的热点(,37)
© www.soinside.com 2019 - 2024. All rights reserved.