首页 > 解决方案 > 为 Keras 准备文本数据(张量流)

问题描述

我刚刚使用 Keras Tokenizer 准备了文本数据

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
VOCAB_SIZE= 10000
tokenizer = Tokenizer(num_words = VOCAB_SIZE)
tokenizer.fit_on_texts(X_train)

X_train_seq = tokenizer.texts_to_sequences(X_train)
X_test_seq = tokenizer.texts_to_sequences(X_test)

知道所有应该成为相同长度的向量以适应神经网络。我应该如何使用pad_sequencesKeras 的功能来做到这一点?这会是(不确定maxlen):

X_train_seq _padded = pad_sequences(X_train_seq, maxlen = VOCAB_SIZE)
X_test_seq _padded = pad_sequences(X_test_seq, maxlen = VOCAB_SIZE)

标签: pythontensorflowkeras

解决方案


是的,您的方法在使用该pad_sequences选项时是正确的,从技术上讲,您的代码将起作用并且模型将运行。

但是,这可能不是实现您想要做的事情的最佳方式:

  • 文本数据的一般格言是序列的平均长度远小于完整的词汇表
  • 例如,在您的情况下,您可以尝试查找序列的平均长度,甚至是最大长度,并且该数字不太可能接近 10,000
  • 如果这在您的数据中是正确的,则模型实际上看到输入的数据非常稀疏,可以通过选择更好的填充长度轻松地将其转换为更密集的形式

所以你可以保持你的代码不变,只需将maxleninpad_sequences(...)函数的值替换为更合理的数字

  • 这可能是您输入的最大长度,或任何其他合适的指标
    • 开始时可能有用的一种方法是将其设置为输入数据的平均值加上一个标准差的长度,但很自然,这是特定于任务的

推荐阅读