Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为Keras准备文本数据(tensorflow)_Python_Tensorflow_Keras - Fatal编程技术网

Python 为Keras准备文本数据(tensorflow)

Python 为Keras准备文本数据(tensorflow),python,tensorflow,keras,Python,Tensorflow,Keras,我刚刚使用Keras标记器准备了文本数据 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_

我刚刚使用Keras标记器准备了文本数据

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)
“知道所有”应该成为相同长度的向量,以适应神经网络。我应该如何使用Keras的
pad_sequences
功能来执行此操作?这会是(不确定maxlen的情况):


是的,您的方法正确地使用了
pad_sequences
选项,从技术上讲,您的代码可以工作,模型也可以运行

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

  • 有文本数据的一般格言是,序列的平均长度远小于完整的词汇表
  • 例如,在您的例子中,您可以尝试查找序列的平均长度,甚至是最大长度,并且该数字不太可能接近10000
  • 如果在数据中是这样,那么模型实际上看到输入的数据非常稀疏,通过选择更好的填充长度,可以很容易地将其转换为更密集的形式
因此,您可以保持代码不变,只需将
pad\u序列(…)
函数中的
maxlen
值替换为更合理的数字即可

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

相同的序列长度不是强制性的,但却是批次优化的良好实践。查看QnA以了解详细信息。希望这有助于。@M.Innat从中了解到,我使用它是错误的,应该将它设置为训练数据中最长条目的长度或更少。不必设置最大序列长度,而是设置一个合理的大小。事实上,这是一种超参数。
X_train_seq _padded = pad_sequences(X_train_seq, maxlen = VOCAB_SIZE)
X_test_seq _padded = pad_sequences(X_test_seq, maxlen = VOCAB_SIZE)