【问题标题】:List Index out of Range: Python, Tensorflow RNN列表索引超出范围:Python、Tensorflow RNN
【发布时间】:2017-09-28 11:56:37
【问题描述】:

有一个错误提示列表索引超出范围。我想这是因为我在预测下一个数字。我正在关注这篇文章 https://chunml.github.io/ChunML.github.io/project/Creating-Text-Generator-Using-Recurrent-Neural-Network/ 作为预测列表中下一个数字的基础,但我正在努力调整这些想法。

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

欢迎任何帮助!

【问题讨论】:

  • 尝试循环使用for i in range(len(data) / SEQ_LENGTH) - 1:
  • 我在 for 循环周围放了一个 while 循环,这也有效。谢谢!
  • 也许不是,我尝试了你的方法,但索引错误仍然得到相同的结果......

标签: python indexing tensorflow


【解决方案1】:

在 for 循环中使用 if 语句循环来防止代码索引超出范围的列表。

使用类似的条件:

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]

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 2019-01-22
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多