2

是否有任何类torch::nn::Linear, torch::nn::Conv1d, torch::nn::Conv2d, ... torch::nn::GRU, ....都继承自该类?torch::nn::Module似乎是一个不错的选择,尽管有一个名为 的中产阶级torch::nn::Cloneable,所以这torch::nn::Module不起作用。此外,torch::nn::Cloneable它本身就是一个模板,因此需要在声明中键入。我想创建一个 general class model,它有std::vector<the common class> layers,以便以后我可以填充layers我想要的任何类型的层,例如Linear, LSTM,等。当前的 API 中是否有这样的功能?这可以在 python 中轻松完成,尽管在这里我们需要声明,这阻碍了 python 的易用性。

谢谢, 阿夫辛

4

1 回答 1

0

我发现nn::sequential可以用于这个目的,它不需要前向实现,它可以是一个积极点,同时也是一个消极点。nn::sequential已经要求每个模块都有一个前向实现,并按照它们添加的顺序调用前向函数。因此,不能像 Dense-Net 那样创建一个临时的非常规前向传递,尽管它已经足够好了用于一般用途。

此外,似乎nn::sequential只是使用 astd::vector<nn::AnyModule>作为其底层模块列表。所以,std::vector<nn::AnyModule>也可以用。

于 2019-03-27T20:01:44.470 回答