测试精度 0.5 TensorFlow RNN 可变长度字符串

Posted

技术标签:

【中文标题】测试精度 0.5 TensorFlow RNN 可变长度字符串【英文标题】:Testing accuracy 0.5 TensorFlow RNN variable length strings 【发布时间】:2017-04-07 05:34:29 【问题描述】:

在修改了您在帖子末尾的链接中找到的以下代码后,即从具有字母 0-1 的可变长度字符串文件中读取并能够通过LSTMCell 设置层数和MultiRNNCell 我得到的精度值为 0.5。

特别是,字符串是一种常规语言,每个字符串都被标记为接受和不接受。

我想要一些关于改变哪些参数以获得更准确的值的建议:

可能需要设置的参数:

learning_rate - training_iters - batch_size - display_step - n_layers - seq_max_len - n_hidden - n_classes。

提前致谢!

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/dynamic_rnn.py

【问题讨论】:

【参考方案1】:

如果没有更多信息,很难回答这个问题。我将从一般的角度独立处理每个参数:

n_classes:根据您的描述,我了解到您正在解决二进制分类问题。因此,n_classes=2。 seq_max_len 表示序列的最大长度。您可以从计算输入的最大长度开始并使用它(如果最大长度太大,则可以使用任何其他合理的长度)。 n_layers, n_hidden - 我建议在获得能够学习的模型时调整这些参数。首先,将它们设置为一些较低的值,例如n_layers = 1 或 2,n_hidden = 64。 batch_size - 100 或接近的值应该可以开始, display_step - 它不影响生成模型的质量,只影响脚本打印中间统计数据的频率。 learning_rate - 您应该选择此值,以减少模型损失。如果 loss 没有减少,则选择较低的 learning_rate training_iters - 您应该监控验证集的损失(和其他指标)并选择最佳迭代次数。

【讨论】:

非常感谢您的回答。我从昨天开始就在尝试这种方式。 不客气。首先要检查的是训练模型时损失值是否在减少。如果不是,则表明模型或优化存在问题(可能学习率太高)。 我尝试更改参数,但不幸的是,我总是得到较低的准确度值和较高的误差。

以上是关于测试精度 0.5 TensorFlow RNN 可变长度字符串的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow 2 实战(kears)- 双层RNN/LSTM/GRU

TensorFlow RNN 文本生成示例教程

Tensorflow MNIST 教程 - 测试精度非常低

TensorFlow实战12:Bidirectional LSTM Classifier

如何在 RNN TensorFlow 中使用非常大的数据集?

tensorflow识别Mnist时,训练集与验证集精度acc高,但是测试集精度低的比较隐蔽的原因