如何处理LSTM的变长数据

据我所知,为LSTM预处理数据的一般步骤包括以下几个步骤

vocab_size = 20000  # 只考虑前20000个词maxlen = 200  # 只考虑每篇影评的前200个词(x_train, y_train), (x_val, y_val) = keras.datasets.imdb.load_data(num_words=vocab_size)print(len(x_train), "训练序列")print(len(x_val), "验证序列")x_train0 = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen)x_val0 = keras.preprocessing.sequence.pad_sequences(x_val, maxlen=maxlen)

在这里,训练数据将包含25,000个变长样本,应用序列填充后,如果序列长度超过200,则会截断数据至长度200;如果数据长度不足200,则会用0填充到200的长度。

如果你的数据序列长度在200 +/- 50之间,或者在90到500的范围内,这并不是一个大问题。

如何处理数据长度从100到60,000的这种情况呢?


回答:

**在LSTM架构中,有一种处理方法:**

  1. 在你的LSTM中,将input_shape参数的时间步组件设置为None,这将帮助你接受变长序列。

  2. 现在会出现一个问题,因为你需要将输入适应到numpy数组中,而numpy数组具有严格的结构(相同长度)。所以我做的就是将你的输入按相同长度分组成批次,然后创建一个数组。现在将它输入到你的网络中。

例如-

lstm = tf.keras.layers.LSTM(latent_dim, input_shape=(None, vocab_len, ))for ip in inputs.groupby(lenghtofinputs):    model.fit(ip, outputof(ip), epoch=100)

请让我知道这是否适用于你的情况,对我来说是有效的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注