TensorFlow LSTM对MNIST进行分类 - 了解不断变化的时间步数

时间:2017-02-17 22:43:29

标签: python tensorflow lstm recurrent-neural-network mnist

上下文

我正在尝试理解RNN,包括实现(在TensorFlow中)和理论。作为其中的一部分,我使用TensorFlow编写了一个简单的LSTM来对MNIST手写数字进行分类。

为此我使用TensorFlow的var g = function* backflip(query) { yield 123; return 0; }; undefined var a = g(); undefined a.next() Object {value: 123, done: false} a.next() Object {value: 0, done: true} a.next() Object {value: undefined, done: true} ,输入形状为dynamic_rnn(和[batch_size, max_timesteps, number_of_inputs])。

当我将MNIST图像输入28个时间步长的模型,每个时间步输入28个像素(总共784个像素)时,模型效果很好,训练速度快,达到高精度(约1分钟/纪元,98%)精确度为128个隐藏单位。)

但是,如果我逐个像素地将图像输入到模型中,那么每个输入大小为1的784个时间步长,模型执行得非常差(约30分钟/纪元,最大精度为40%)。


问题

  • 这到底发生了什么?为什么以像素为单位输入图像会导致模型执行得如此糟糕?这是因为没有足够的背景,或者有太多的时间步,或者模型是否有问题?
  • 有没有办法改变这一点,以便在逐像素输入图像时模型能够正常工作?我听说过在一定时间内截断反向传播,但TensorFlow文档还不清楚如何做到这一点,我还没有找到任何合适的指南。


代码,如果它有用:

time_major=False

0 个答案:

没有答案