私は最近私自身のニューラルネットワークシステムを書くよう促したビデオを見ました。ネットワークのノードの量を調整したいと思っていました。バリデーショナルテンプレートに依存するクラス
最初は実行時にノード数の配列を解析してこれを実現しましたが、コンパイル時にこれを実行できるかどうかは疑問でした。私が達成しようとしていたものの例です。より詳細な例として
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
};
、Net<784, 16, 16, 10> n;
n.m_weightは、私はC++やconstexprのについて知っていることから、タイプ
tuple<Eigen::Matrix<float, 784, 16>,
Eigen::Matrix<float, 16, 16>,
Eigen::Matrix<float, 16, 10>>
を持っている必要があり、これは可能なはずです。
私は
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());
}
};
を行うことができたことを追加する必要があります。しかし、私はもう一度、動的matriciesを使用していますし、それは私が望んでいたものではありません。
何かアドバイスや作業例があれば幸いです。
、ライン 'メートル(*(私は++)、* I)' C++ 17 –
で指定されていないC++ 14、まで未定義の動作を呼び出し、あなたは見つけるかもしれない*恥知らずな自己宣伝* [このレポ](https://github.com/liammcinroy/MetaTemplateNeuralNet)興味深い –