IndexError: индекс 22 выходит за пределы оси 1 с размером 22? - PullRequest
0 голосов
/ 17 июня 2020

при работе с английским sh на хинди возникла ошибка «IndexError: индекс 22 выходит за границы оси 1 с размером 22». Сеть LSTM

def generate_batch(X = X_train, y = y_train, batch_size = 128):
    ''' Generate a batch of data '''
    while True:
        for j in range(1, len(X), batch_size):
            encoder_input_data = np.zeros((batch_size, max_length_src),dtype='float32')
            decoder_input_data = np.zeros((batch_size, max_length_tar),dtype='float32')
            decoder_target_data = np.zeros((batch_size, max_length_tar, num_decoder_tokens),dtype='float32')
            for i, (input_text, target_text) in enumerate(zip(X[j:j+batch_size], y[j:j+batch_size])):
                for t, word in enumerate(input_text.split()):
                    encoder_input_data[i, t] = input_token_index[word] # encoder input seq
                for t, word in enumerate(target_text.split()):
                    if t<len(target_text.split())-1:
                        decoder_input_data[i, t] = target_token_index[word] # decoder input seq #erro point
                    if t>0:
                        # decoder target sequence (one hot encoded)
                        # does not include the START_ token
                        # Offset by one timestep
                        decoder_target_data[i, t - 1, target_token_index[word]] = 1.
            yield([encoder_input_data, decoder_input_data], decoder_target_data)

1 Ответ

1 голос
/ 17 июня 2020

Простите меня, если я ошибаюсь, но это выглядит как классическая c ошибка разницы на единицу.

Если список имеет размер 22, последняя индексируемая позиция - 21. Это потому что индексы для списков начинаются с 0.

Из приведенного кода трудно сказать, где именно в коде возникла эта проблема.

...