Common class for Linear, Conv1d, Conv2d,..., LSTM,

Common class for Linear, Conv1d, Conv2d,..., LSTM,

有没有class所有torch::nn::Linear, torch::nn::Conv1d, torch::nn::Conv2d, ... torch::nn::GRU, ....都继承的? torch::nn::Module 似乎是一个不错的选择,虽然中间有一个 class,叫做 torch::nn::Cloneable,所以 torch::nn::Module 不起作用。此外,torch::nn::Cloneable 本身是一个模板,因此需要在声明中键入。 我想创建一个通用的 class model,它有 std::vector<the common class> layers,这样以后我可以用我想要的任何类型的图层填充 layers,例如 Linear, LSTM, 等。是当前API有这样的能力吗?这可以在 python 中轻松完成,但这里我们需要声明,这阻碍了 python 的简单性。

谢谢, 阿夫欣

我发现nn::sequential可以用于这个目的,而且不需要前向实现,既可以是正点,又可以是负点。 nn::sequential 已经要求每个模块都有一个前向实现,并按照它们添加的顺序调用前向函数。因此,不能像 Dense-Net 这样创建一个特别的非常规前向传递,虽然它对于一般用途来说已经足够好了。

此外,nn::sequential 似乎只是使用了一个 std::vector<nn::AnyModule> 作为它的底层模块列表。因此,也可以使用 std::vector<nn::AnyModule>