【问题标题】:How do I tune state size for a Tensorflow RNN / LSTM, or more generally reduce overfitting?如何调整 Tensorflow RNN / LSTM 的状态大小,或更一般地减少过度拟合?
【发布时间】:2016-11-05 02:14:18
【问题描述】:

我有一个包含约 1100 个特征和 60k 个训练数据样本的分类器。我创建了一个包含 1100 个 LSTM 单元的 RNN,它正确地分类了我所有的训练数据,然后在测试数据上表现不佳。

如果我有一个非常大的前馈 NN,我认为它的行为会类似,并且会减小隐藏层的大小、添加正则化、dropout 等以减少过度拟合。

我将如何为 RNN/LSTM 做同样的事情? (添加了 dropout,但没有看到添加正则化或特别是控制 LSTM 状态大小的方法 - 似乎默认输入大小可能太大)

我看到有一个 input_size 参数现在已弃用且未使用。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard5/tf.nn.rnn_cell.LSTMCell.md

我在该文档中看到了对

的引用
{#LSTMCell.init}
{#LSTMCell.output_size}
{#LSTMCell.state_size}

但是如何使用它们呢?简单的教程示例只是使用默认值,这会导致过度拟合。

如果有其他方法可以发现和调整超参数,我没有看到。

【问题讨论】:

  • 我想我的想法是对数据进行降维。尽管如此,我对没有可调正则化参数和状态大小感到惊讶,我觉得我一定遗漏了一些东西。我确实有很多样本大小的预测变量,但是逻辑回归和前馈神经网络在输入上的表现相当不错。

标签: machine-learning tensorflow recurrent-neural-network


【解决方案1】:

Batch normalisation 现在被广泛接受为一般的学习促进者和规范化者。

这是批量标准化 LSTM 单元的 Tensorflow 实现:https://github.com/OlavHN/bnlstm/blob/master/lstm.py

这里的文章中解释了这个实现:Batch normalized LSTM for Tensorflow

它正在应用论文中的原则:Recurrent Batch Normalization (arXiv)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-11-21
    • 2019-03-22
    • 2014-12-02
    相关资源
    最近更新 更多