Установить начальные значения веса нейронной сети в факеле C ++ - PullRequest
0 голосов
/ 23 января 2019

Я искал API для установки начальных значений веса в libtorch. В версии Python (т.е. pytorch) можно легко использовать torch.nn.functional.weight.data.fill_(xx) и torch.nn.functional.bias.data.fill_(xx). Но, похоже, такого API еще не существует в C ++. Буду признателен за любую помощь или комментарий для достижения такой функциональности.

Спасибо, Afshin

1 Ответ

0 голосов
/ 26 февраля 2019

Я разработал эту функцию, чтобы сделать это:

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 объектом, все его слои собраны в список, назовите `layer '.

...