线性,Conv1d,Conv2d,...,LSTM,

时间:2019-03-18 14:31:34

标签: c++ pytorch libtorch

是否有所有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的易用性。

谢谢, 苦参碱

1 个答案:

答案 0 :(得分:0)

我发现nn::sequential可以用于此目的,并且不需要前向实现,这可以是一个积极的方面,同时也可以是消极的方面。 nn::sequential已经要求每个模块都具有正向实现,并按其添加的顺序调用正向函数。因此,无法使用这种方法创建像Dense-Net这样的ad-hock非常规正向传递,虽然对于一般用法已经足够了。

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