2017-09-28 2 views
2

Une erreur est survenue lors de l'affichage de l'index de la liste en dehors de la plage. Je pense que c'est parce que je prédis le prochain numéro. Je suis cet article https://chunml.github.io/ChunML.github.io/project/Creating-Text-Generator-Using-Recurrent-Neural-Network/ comme base pour prédire le prochain numéro dans une liste, mais j'ai du mal à aligner les idées.Index de liste hors de portée: Python, Tensorflow RNN

data = ['1','0','0','1','4','2','6','1','1','0','0','1','4','2'] 
chars = list(set(data)) 

VOCAB_SIZE= len(chars) 
number_of_sequences= 1 
SEQ_LENGTH=2 
#Prepare training data 

ix_to_char={ix:char for ix, char in enumerate(chars)} 
char_to_ix={char:ix for ix, char in enumerate(chars)} 

X= np.zeros((len(data)/SEQ_LENGTH, SEQ_LENGTH, VOCAB_SIZE)) 
y= np.zeros((len(data)/SEQ_LENGTH, SEQ_LENGTH, VOCAB_SIZE)) 

for i in range(len(data)/SEQ_LENGTH): 
    X_sequence = data[i*SEQ_LENGTH:(i+1)*SEQ_LENGTH] 
    X_sequence_ix=[char_to_ix[value] for value in X_sequence] 
    input_sequence= np.zeros((SEQ_LENGTH, VOCAB_SIZE)) 

    for j in range(0,SEQ_LENGTH): 
     input_sequence[j][X_sequence_ix[j]]=1 
    X[i]=input_sequence 

    y_sequence = data[i*(SEQ_LENGTH+1):(i+1)*(SEQ_LENGTH+1)] 
    y_sequence_ix = [char_to_ix[value] for value in y_sequence] 
    target_sequence= np.zeros((SEQ_LENGTH, VOCAB_SIZE)) 

    for j in range(0,SEQ_LENGTH): 
     target_sequence[j][y_sequence_ix[j]]=1 #LIST INDEX OUT OF RANGE 

    y[i]=target_sequence 

Toute aide est la bienvenue!

+0

Essaye en boucle avec 'pour i dans la gamme (len (données)/SEQ_LENGTH) - 1:' – Engineero

+0

-je mettre une boucle while autour de ma boucle et qui ont fonctionné aussi. Je vous remercie! – user8512104

+0

Peut-être pas, j'ai essayé votre méthode et toujours eu le même résultat sur l'erreur d'indexation ... – user8512104

Répondre

0

Utilisez une boucle d'instruction if dans votre boucle for pour empêcher votre code d'indexer la liste hors de portée.

utiliser une condition comme:

for i in range(len(data)/SEQ_LENGTH): if ((i+1)*SEQ_LENGTH) < len(data): X_sequence = data[i*SEQ_LENGTH:(i+1)*SEQ_LENGTH]