如何解决可变大小的 AST 作为(卷积)神经网络模型输入的问题?

人工智能 神经网络 卷积神经网络 图表
2021-10-23 13:14:57

在我的工作中,我有一个给定的模块源代码。从这个模块我生成一个 AST,它的大小取决于模块的大小(例如更多的源代码 -> 更大的 AST)。我想训练一个神经网络模型,该模型将学习模块的一般结构并能够评估(以 0 到 1 的等级)模块在结构方面的“好”程度(如果需要在开始时,然后是局部函数、变量和最终返回)。现在我了解到卷积神经网络对此非常方便,但我似乎无法解决的问题是它们需要我无法产生的固定大小的输入。如果我添加零填充,那么结果会出现偏差,准确性会受到影响。这个问题有明确的解决方案吗?

1个回答

您已经为您的问题找到了一种解决方案:零填充。

还有另外两种常见的可能性:

  1. 使用递归神经网络
    这通常用于文本处理,您可以将每个单词一个接一个地输入模型。
  2. 使用递归神经网络(我不会在你的用例中推荐这个)
    这种方法也经常用于文字处理,但更常用于文本的语义分析。您将文本缩减为基本内容,直到达到所需的长度。但是,在此过程中会丢失信息。