在C ++手电筒中设置神经网络初始权重值

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

我正在寻找一个API来设置libtorch中的初始权重值。在python版本中,(即pytorch)可以轻松使用torch.nn.functional.weight.data.fill_(xx)torch.nn.functional.bias.data.fill_(xx)。但是,似乎C ++中还没有这样的API。我将不胜感激任何帮助或评论来实现这样的功能。

谢谢,Afshin

torch libtorch
1个回答
0
投票

我开发了这个函数来做到这一点:

void set_weights(fc_model &src_net) {

//    torch::NoGradGuard no_grad;
    torch::autograd::GradMode::set_enabled(false);
    for (int k=0; k < src_net.no_layers-1; k++ ) {
        src_net.layers[k]->weight.uniform_(0.001, 0.001);
        src_net.layers[k]->bias.uniform_(0.0, 0.0);
    }
    torch::autograd::GradMode::set_enabled(true);
}

其中src_net是一个nn对象,其所有图层都聚集在一个列表中,命名为“layers”。

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