python - 如何 reshape 文本数据以适合keras中的LSTM模型

标签 python tensorflow keras lstm autoencoder

更新1:

我指的代码就是书中的代码,你可以找到它here .

唯一的问题是我不想在解码器部分使用 embed_size。这就是为什么我认为我根本不需要嵌入层,因为如果我放置嵌入层,我需要在解码器部分有 embed_size(如果我错了请纠正我)。

总的来说,我试图在不使用嵌入层的情况下采用相同的代码,因为我需要在解码器部分有 vocab_size

我认为评论中提供的建议可能是正确的(using one_hot_encoding)我怎么会遇到这个错误:

当我执行 one_hot_encoding 时:

tf.keras.backend.one_hot(indices=sent_wids, classes=vocab_size)

我收到这个错误:

在 check_num_samples 中 你应该指定 + steps_name + 参数 ValueError:如果你的数据是符号张量的形式,你应该指定 steps_per_epoch 参数(而不是 batch_size 参数,因为符号张量应该产生批量输入数据)

我准备数据的方式是这样的:

sent_lens 的形状是 (87716, 200),我想以一种可以将其输入 LSTM 的方式 reshape 它。 这里 200 代表 sequence_lenght87716 是我拥有的样本数。

下面是LSTM自动编码器的代码:

inputs = Input(shape=(SEQUENCE_LEN,VOCAB_SIZE), name="input")
encoded = Bidirectional(LSTM(LATENT_SIZE), merge_mode="sum", name="encoder_lstm")(inputs)
decoded = RepeatVector(SEQUENCE_LEN, name="repeater")(encoded)
decoded = LSTM(VOCAB_SIZE, return_sequences=True)(decoded)
autoencoder = Model(inputs, decoded)
autoencoder.compile(optimizer="sgd", loss='mse')
autoencoder.summary()
history = autoencoder.fit(Xtrain, Xtrain,batch_size=BATCH_SIZE, 
epochs=NUM_EPOCHS)

我是否还需要做任何额外的事情,如果不需要,为什么我不能得到这个作品?

请让我知道哪部分我会解释。

感谢您的帮助:)

最佳答案

您需要按以下方式 reshape 数据:

  • 样本。一个序列就是一个样本。一个批处理由一个或 更多 sample 。
  • 时间步数。一个时间步是一个观察点 在样本中。
  • 特点。一个特征是一次一个观察 步骤。

(样本、time_steps、特征)

那么您的模型应该如下所示(简化版):

visible = Input(shape=(time_steps, features))
encoder = LSTM(100, activation='relu')(visible)
# define reconstruct decoder
decoder = RepeatVector(time_steps)(encoder)
decoder = LSTM(100, activation='relu', return_sequences=True)(decoder)
decoder = TimeDistributed(Dense(features))(decoder)
model = Model(visible, decoder)

检查 this很棒的教程。应该对您的情况有所帮助。

但是,也就是说您可能只需要 expand the dimensions数组的。

检查 this也可能会把事情搞清楚。

希望以上内容对您有所帮助。

关于python - 如何 reshape 文本数据以适合keras中的LSTM模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56730261/

相关文章:

python - 使用Flask,尝试让AJAX在更新mongo记录后更新span,但它打开一个新页面

python - Tensorflow:如何在一个模块中拥有 saver.save() 和 .restore() ?

python - 未实现错误: Layers with arguments in `__init__` must override `get_config`

tensorflow - 如何在 Keras 中设置训练模型的输入形状?

python - Keras - 无法通过裁剪来限制输出

python - 有什么好方法对时间序列股票数据进行分组吗?

python - 使用 python/pandas 在 excel 上创建颜色渐变的最简单方法?

python - 如何解决 Django 中的 UnicodeDecodeError?

python - 拟合 TensorForestEstimator 时 TensorFlow 崩溃

tensorflow - GPU tensorflow 安装问题