返回自定义图层搜索模式断言错误

时间:2018-12-01 09:20:29

标签: tensorflow returnn

我已经实现了一个自定义的RETURNN层(HMM Factorization),该层在训练期间可以按预期工作,但是在搜索模式下使用时会引发断言错误。该层的输出与softmax层的输出相同。

以下是使用的配置:transformer + HMM Factorization

这已使用最新版本的RETURNN进行了测试。

失败的确切行是(code link):

assert fixed_seq_len is not None

这里是full error log(太大了,无法粘贴到此处)

这里是training initialisation

有人知道该错误可能是什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这实际上是RETURNN中的错误。我创建了一个拉取请求AWS SES,该请求应该可以解决,并现在将其合并。

问题不在于您的自定义图层,而是RecLayer内部的一个图层,该图层实际上是完全独立的,即:

'encoder_int': {'activation': None,
                'class': 'linear',
                'from': ['base:encoder'],
                'n_out': 1000,
                'with_bias': False}

这仅取决于一个基本层("base:encoder"),仅此而已。因此,由于它是独立的,因此它(正确地)优化了循环循环之外的这一层。

但是,然后它会看到您正在循环中访问此层,并且由于这是一个时间上的循环,因此假定该循环超出了"base:encoder"的时间范围。然后,它在给定rec层的序列长度的情况下尝试展开"base:encoder"TensorArray.unroll),但随后失败,因为此时它不知道rec层的序列长度。

我的修复程序现在进行了一些更高级的检查,以确定此假设是否正确,即循环确实在同一时间范围内。该检查虽然有点脆弱,但不确定在所有情况下是否都能正常工作。但是,我创建了一个重现您的问题的测试用例,现在已解决。