Keras 中的有状态自动编码器

伯里什

我正在尝试创建一个有状态的自动编码器模型。目标是使自动编码器对每个时间序列都有状态。数据由 10 个时间序列组成,每个时间序列有 567 个长度。

timeseries#1: 451, 318, 404, 199, 225, 158, 357, 298, 339, 155, 135, 239, 306, ....
timeseries#2: 304, 274, 150, 143, 391, 357, 278, 557, 98, 106, 305, 288, 325, ....
...
timeseries#10: 208, 138, 201, 342, 280, 282, 280, 140, 124, 261, 193, .....

我的回溯窗口是 28。所以我用 28 个时间步生成了以下序列:

[451, 318, 404, 199, 225, 158, 357, 298, 339, 155, 135, 239, 306, .... ]
[318, 404, 199, 225, 158, 357, 298, 339, 155, 135, 239, 306, 56, ....]
[404, 199, 225, 158, 357, 298, 339, 155, 135, 239, 306, 56, 890, ....]
...
[304, 274, 150, 143, 391, 357, 278, 557, 98, 106, 305, 288, 325, ....]
[274, 150, 143, 391, 357, 278, 557, 98, 106, 305, 288, 325, 127, ....]
[150, 143, 391, 357, 278, 557, 98, 106, 305, 288, 325, 127, 798, ....]
...
[208, 138, 201, 342, 280, 282, 280, 140, 124, 261, 193, .....]
[138, 201, 342, 280, 282, 280, 140, 124, 261, 193, 854, .....]

这为每个时间序列提供了 539 个序列。我需要做的是让 LSTM 对每个时间序列都是有状态的,并在看到时间序列中的所有序列后重置状态。这是我的代码:

batch_size = 35  #(total Number of samples is 5390, and it is dividable by 35)
timesteps = 28
n_features = 1
hunits = 14
RepeatVector(timesteps/hunits = 2)
epochs = 1000


inputEncoder = Input(batch_shape=(35, 28, 1), name='inputEncoder')
outEncoder, c, h = LSTM(14, stateful=True, return_state=True, name='outputEncoder')(inputEncoder)
encoder_model = Model(inputEncoder, outEncoder)

context = RepeatVector(2, name='inputDecoder')(outEncoder)
context_reshaped = Reshape(28, 1), name='ReshapeLayer')(context)

outDecoder = LSTM(1, return_sequences=True, stateful=True, name='decoderLSTM')(context_reshaped)

autoencoder = Model(inputEncoder, outDecoder)

autoencoder.compile(loss='mse', optimizer='rmsprop')

for i in range(epochs):
       history = autoencoder.fit(data, data,
                          validation_split=config['validation_split_ratio'],
                          shuffle=False,
                          batch_size=35,
                          epochs=1,
                         )   
       autoencoder.reset_states()

2个问题:

1-第一个纪元完成后我收到此错误,我想知道它是怎么发生的:

ValueError: Cannot feed value of shape (6, 28, 1) for Tensor u'inputEncoder:0', which has shape '(35, 28, 1)'

2- 我不认为那个模型能如我所愿。在这里,它将在所有批次(一个时期)后重置状态,这意味着在处理完所有时间序列之后。我应该如何在时间序列之间将其更改为有状态?

伯里什

问题出在validation_split汇率上!!它被设置为 0.33%,当分裂发生时,它尝试训练 3611 个数据样本,这些样本不能被我的batch_size=35. 根据这篇文章,我可以找到正确的数字,从那篇文章中复制:

def quantize_validation_split(validation_split, sample_count, batch_size):
    batch_count = sample_count / batch_size
    return float(int(batch_count * validation_split)) / batch_count

然后你可以打电话model.fit(..., validation_split=fix_validation_split(0.05, len(X), batch_size))但如果 keras 在 fit() 中为你做这件事会很酷。

另外,关于使自动编码器按照我需要的方式有状态:reset_state在每个时代结束时不应该有一个

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Keras自动编码器的精度/损耗不变

来自分类Dev

keras变分自动编码器损失函数

来自分类Dev

猫图像的 Keras 自动编码器的微调

来自分类Dev

keras 中的级联模型(自动编码器 + 分类器)

来自分类Dev

如何在Keras的LSTM自动编码器中获得Middel层的输出

来自分类Dev

在Keras中训练变型自动编码器会引发“ InvalidArgumentError:形状不兼容”错误

来自分类Dev

在 Keras 中的数值数据集上使用自动编码器

来自分类Dev

在编码器和解码器 keras 上拆分自动编码器

来自分类Dev

Keras中的变体自动编码器:在训练和预测时如何实现Keras层的不同输出?

来自分类Dev

渴望执行功能的输入不能是带有变分自动编码器的Keras符号张量

来自分类Dev

keras 中的自定义损失在训练自动编码器期间会产生误导性的输出

来自分类Dev

Tensorflow Keras 在自动编码器中分别使用编码器和解码器

来自分类Dev

Keras-火车卷积网络,获取自动编码器输出

来自分类Dev

Keras自动编码器的输入和输出层不匹配,无法运行模型

来自分类Dev

Keras-组合模型如何在自动编码器上仅提取部分

来自分类Dev

使用Keras子类化创建自动编码器模型

来自分类Dev

尽管模型摘要清晰,但Keras变分自动编码器仍无法工作?

来自分类Dev

Keras flow_from_directory自动编码器培训

来自分类Dev

Keras-火车卷积网络,获取自动编码器输出

来自分类Dev

LSTM 自动编码器的可变长度输入 - Keras

来自分类Dev

获取特定层的输出作为测试数据的结果,以代替keras中的最后一层(自动编码器的潜在功能)

来自分类Dev

使用预训练vgg19 tensorflow,Keras在CNN自动编码器中定义自定义损失(感知损失)

来自分类Dev

在运行时使用keras从自动编码器模型的隐藏图层中保存要素

来自分类Dev

为什么在R中使用keras训练自动编码器时会收到此错误?

来自分类Dev

自动编码器中的捆绑权重

来自分类Dev

Theano中的反卷积自动编码器

来自分类Dev

什么是caffe自动编码器中的稀疏字段?

来自分类Dev

在 pytorch 中对自动编码器进行上采样

来自分类Dev

从Encog中的自动编码器抓取编码器/解码器

Related 相关文章

  1. 1

    Keras自动编码器的精度/损耗不变

  2. 2

    keras变分自动编码器损失函数

  3. 3

    猫图像的 Keras 自动编码器的微调

  4. 4

    keras 中的级联模型(自动编码器 + 分类器)

  5. 5

    如何在Keras的LSTM自动编码器中获得Middel层的输出

  6. 6

    在Keras中训练变型自动编码器会引发“ InvalidArgumentError:形状不兼容”错误

  7. 7

    在 Keras 中的数值数据集上使用自动编码器

  8. 8

    在编码器和解码器 keras 上拆分自动编码器

  9. 9

    Keras中的变体自动编码器:在训练和预测时如何实现Keras层的不同输出?

  10. 10

    渴望执行功能的输入不能是带有变分自动编码器的Keras符号张量

  11. 11

    keras 中的自定义损失在训练自动编码器期间会产生误导性的输出

  12. 12

    Tensorflow Keras 在自动编码器中分别使用编码器和解码器

  13. 13

    Keras-火车卷积网络,获取自动编码器输出

  14. 14

    Keras自动编码器的输入和输出层不匹配,无法运行模型

  15. 15

    Keras-组合模型如何在自动编码器上仅提取部分

  16. 16

    使用Keras子类化创建自动编码器模型

  17. 17

    尽管模型摘要清晰,但Keras变分自动编码器仍无法工作?

  18. 18

    Keras flow_from_directory自动编码器培训

  19. 19

    Keras-火车卷积网络,获取自动编码器输出

  20. 20

    LSTM 自动编码器的可变长度输入 - Keras

  21. 21

    获取特定层的输出作为测试数据的结果,以代替keras中的最后一层(自动编码器的潜在功能)

  22. 22

    使用预训练vgg19 tensorflow,Keras在CNN自动编码器中定义自定义损失(感知损失)

  23. 23

    在运行时使用keras从自动编码器模型的隐藏图层中保存要素

  24. 24

    为什么在R中使用keras训练自动编码器时会收到此错误?

  25. 25

    自动编码器中的捆绑权重

  26. 26

    Theano中的反卷积自动编码器

  27. 27

    什么是caffe自动编码器中的稀疏字段?

  28. 28

    在 pytorch 中对自动编码器进行上采样

  29. 29

    从Encog中的自动编码器抓取编码器/解码器

热门标签

归档