从文件加载后CNTK / TF LSTM模型性能下降

时间:2018-05-28 19:28:31

标签: python tensorflow cntk

我尝试使用CNTK和TF在虚拟数据集上实现char-LSTM分类模型,两种模型在完美数据集上都达到了100%的准确度(我现在不关心过度拟合)。

然而,一旦训练完成并且模型被保存到文件并恢复,模型似乎忘记了他们的训练并且在同一数据集上表现不佳。

我比较了训练后和恢复后LSTM和致密层的重量和偏差,它们完美匹配。我觉得还有其他东西需要恢复(LSTM状态可能?)让模型再次开始准确运行。

恢复的LSTM模型是否需要“准备好”"在某种程度上,他们可以再次开始满负荷运转?

代码和数据集可用here

1 个答案:

答案 0 :(得分:1)

该问题与保存/加载LSTM无关。

在Python中,当您将一个集转换为一个列表时,结果不会被排序,并且与run to run不同:

In [1]: list(set(['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 'p', 'a', 'm']))
Out[1]: ['s', 'a', 'm', 't', 'h', 'p', 'i', ' ']

In [1]: list(set(['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 'p', 'a', 'm']))
Out[1]: [' ', 'h', 'a', 't', 'm', 'i', 'p', 's']

因此,在你的代码中,不同的字符在运行到运行的向量中会有不同的位置,因此性能只是随机的。

只需将all_chars = list(set(all_chars))更改为all_chars = sorted(set(all_chars))即可解决问题(我只验证了CNTK脚本)。