python - 如何编码序列以在keras中对RNN进行排序?

标签 python neural-network keras recurrent-neural-network sequence-to-sequence

我正在尝试编写一个序列来对 keras 中的 RNN 进行排序。我使用我从网上了解到的内容编写了这个程序。我首先将文本标记化,然后将文本转换为序列并填充以形成特征变量 X。目标变量Y是先将x左移然后填充得到的。最后,我将我的特征和目标变量提供给了我的 LSTM 模型。

这是我为此目的用 keras 编写的代码。

from keras.preprocessing.text import Tokenizer,base_filter
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Dense, Activation,Dropout,Embedding
from keras.layers import LSTM


def shift(seq, n):
    n = n % len(seq)
    return seq[n:] + seq[:n]

txt="abcdefghijklmn"*100

tk = Tokenizer(nb_words=2000, filters=base_filter(), lower=True, split=" ")
tk.fit_on_texts(txt)
x = tk.texts_to_sequences(txt)
#shifing to left
y = shift(x,1)

#padding sequence
max_len = 100
max_features=len(tk.word_counts)
X = pad_sequences(x, maxlen=max_len)
Y = pad_sequences(y, maxlen=max_len)

#lstm model
model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(max_len))
model.add(Activation('softmax'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop')

model.fit(X, Y, batch_size=200, nb_epoch=10)

问题是它显示错误

Epoch 1/10
IndexError: index 14 is out of bounds for size 14
Apply node that caused the error: AdvancedSubtensor1(if{inplace}.0, Reshape{1}.0)
Toposort index: 80

最佳答案

问题出在:

model.add(Embedding(max_features, 128, input_length=max_len, dropout=0.2))

在嵌入中 documentation您可能会看到提供给它的第一个参数应该设置为词汇表的大小 + 1。这是因为应该总是有一个位置用于索引为 0null 单词.因此,您需要将此行更改为:

model.add(Embedding(max_features + 1, 128, input_length=max_len, dropout=0.2))

关于python - 如何编码序列以在keras中对RNN进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933958/

相关文章:

python-3.x - Keras NN 损失没有减少

python - 如何让我的 App Engine 事务重试?

python - 我如何在 Python 中同时多次 append 一个项目?

php - 在 Web 应用程序中使用 TensorFlow 模型

python - Keras 中的自定义 Hebbian 层实现 - 输入/输出暗淡和横向节点连接

python - Keras:UnboundLocalError:分配前引用了局部变量 'logs'

python - 将大文本文件拆分为句子

python - 无法使用 del 函数删除 json 中的字典键。收到类型错误

machine-learning - Keras CNN 参数太少

networking - Matlab 中 genFunction 生成的神经网络中的 x1_step1_xoffset、x1_step1_gain 和 x1_step1_ymin 是什么?