Функция предсказания Keras выдает AttributeError: объект 'tuple' не имеет атрибута 'ndim' - PullRequest
0 голосов
/ 06 сентября 2018

Я перехожу по этой ссылке , чтобы обучить классификатор rnn на небольшом наборе данных, чтобы проверить, работает ли код.

При выполнении команды rnn.predict(data_test, 'answer.csv'), выдается исключение:

AttributeError: 'tuple' object has no attribute 'ndim'

Вот функция предсказания

def predict(self, data_test, answer_filename):
    word_matrix, char_matrix, additional_features_matrix = data_test

    print("Test example: ")
    print(word_matrix[0])
    print(char_matrix[0])
    print(additional_features_matrix[0])
    preds = self.model.predict([word_matrix, char_matrix, additional_features_matrix], 
                               batch_size=self.batch_size, verbose=1)
    index_to_author = { 0: "EAP", 1: "HPL", 2: "MWS" }
    submission = pd.DataFrame({"id": test["id"], index_to_author[0]: preds[:, 0], 
                               index_to_author[1]: preds[:, 1], index_to_author[2]: preds[:, 2]})
    submission.to_csv(answer_filename, index=False)

word_matrix, char_matrix, additional_features_matrix имеют переменную длину.В моем случае размеры (80,), (80, 30) и (1153, 15) соответственно.Я нашел его в Google и обнаружил, что должен добавить отступ во входной массив numpy.

Но код в ссылке работал нормально.Я не могу понять, что я делаю неправильно.Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 03 ноября 2018

Я обнаружил свою ошибку.Если вы перейдете по этой ссылке , то найдете следующую строку кода:

_, additional_features_matrix_test = collect_additional_features(x.iloc[idx_train], x_test)

Функция collect_additional_features возвращает кортеж из двух ndarrays.Моя ошибка состояла в том, что я пропустил _ и, следовательно, строка кода стала такой:

additional_features_matrix_test = collect_additional_features(x.iloc[idx_train], x_test)

Таким образом, additional_features_matrix_test стал кортежем вместо ndarray и, передавая additional_features_matrix_test в LSTM, он бросилошибка AttributeError: 'tuple' object has no attribute 'ndim'

...