【问题标题】:Common class for Linear, Conv1d, Conv2d,..., LSTM,Linear、Conv1d、Conv2d、...、LSTM、
【发布时间】:2019-03-28 04:01:44
【问题描述】:

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

谢谢, 阿夫辛

【问题讨论】:

    标签: c++ pytorch libtorch


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2021-07-26
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多