Linear,Conv1d,Conv2d,...,LSTM的通用类,

问题描述 投票:2回答:1

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

谢谢,Afshin

c++ pytorch libtorch
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.