这个问题是指 Theano 中的最佳实践。这是我正在尝试做的事情:
我正在为 SMT 系统构建神经网络。在这种情况下,我在概念上将句子表示为可变长度的单词列表,并将单词表示为固定长度的整数列表。理想情况下,我想将我的语料库表示为 3D 张量(第一维 = 语料库中的句子,第二维 = 句子中的单词,第三维 = 单词中的整数特征)。困难在于句子的长度是可变的,据我所知,Theano 中的张量有严格的要求,即一维中的所有长度必须相同。
我想到的解决方案包括:
- 对虚拟词使用填充,使句子大小相等。但这意味着每当我遍历一个句子时,我都需要包含特殊代码来丢弃填充。
- 将语料库表示为矩阵向量。但是,这使得使用某些功能变得困难。例如,如果我想将一个句子中所有单词的表示相加,我不能简单地使用 *corpus.sum(axis=1)*。我必须遍历句子,执行 *sentence.sum(axis=0)*,然后将结果收集到另一个张量中。
我的问题是:这些替代方案中的哪一个是首选,还是有更好的替代方案?