小编Con*_*ate的帖子

具有依赖于可变模板的类型的类

我最近观看了一段视频,它激励我编写自己的神经网络系统,我希望网络中的节点数量可以调整.

起初我通过解析节点数量的数组在运行时实现了这一点,但我想知道我是否可以在编译时执行此操作.这是我希望完成的事情的一个例子.

template<int FirstNodes, int SecondNodes, int... OtherNodes>
class Net
{
    tuple<Eigen::Matrix<float, FirstNodes, SecondNodes>, ...> m_weights;
    // More matricies with the values from the OtherNodes
};
Run Code Online (Sandbox Code Playgroud)

作为更详细的示例,Net<784, 16, 16, 10> n;n.m_weight应该具有类型

tuple<Eigen::Matrix<float, 784, 16>,
    Eigen::Matrix<float, 16, 16>,
    Eigen::Matrix<float, 16, 10>>
Run Code Online (Sandbox Code Playgroud)

根据我对C++和constexpr的了解,这应该是可能的.

我应该补充说我能够做到

template<int FirstNodes, int SecondNodes, int... OtherNodes>
class Net
{
public:
    Net()
    {
        auto nodes = {FirstNodes, SecondNodes, OtherNodes...};

        auto i = nodes.begin();
        do 
        {
            // Eigen::Matrix<float, Dynamic, Dynamic>
            Eigen::MatrixXf m(*(i++), *i);
        } while (i+1 != nodes.end()); …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming variadic-templates c++11

11
推荐指数
1
解决办法
259
查看次数