Access Weight and Bias with nn::sequentialSet neural network initial weight values in C++ torch

Where did Otto von Bismarck say "lying awake all night, hating"?

Who are the people reviewing far more papers than they're submitting for review?

Why don't airports use arresting gears to recover energy from landing passenger planes?

Do encumbered characters suffer any penalties when exploring and/or traveling?

All numbers twice in a 7x7 Minesweeper grid

Better way to obtain a smaller vertical line | scaled to math?

Wrong Schengen Visa exit stamp on my passport, who can I complain to?

Very lazy puppy

Tips for remembering the order of parameters for ln?

Which block header fields are miners able to change in an effort to avoid having to recalculate the Merkle Root?

Bash attempts to write two shell prompts?

What is Cousin Itt in The Addams Family?

Should the pagination be reset when changing the order?

How far away from you does grass spread?

How do rulers get rich from war?

Explanation of 申し訳ございません

Is a global DNS record a security risk for phpMyAdmin?

What does the Free Recovery sign (UK) actually mean?

Three knights searching for a princess in a castle

Why would a fighter use the afterburner and air brakes at the same time?

Inquiry answerer

Paradox regarding phase transitions in relativistic systems

What exactly is a web font, and what does converting to one involve?

Amortized Loans seem to benefit the bank more than the customer



Access Weight and Bias with nn::sequential


Set neural network initial weight values in C++ torch






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















If I define std::vector<torch::nn::Linear> linear_layers; and fill this vector with some torch::nn::Linear objects, then I can access the weight and bias values by linear_layers[k].weight and linear_layers[k].bias. Same feature is available with other layer types, e.g., torch::nn::Conv2d.



If create my network using nn::sequential and then push back either of Linear or Conv2d I cannot access the weight and bias directly. Now, my question is how can I access the weight and bias values of each layer when I have used nn::sequential?



Thanks,
Afshin










share|improve this question






























    1















    If I define std::vector<torch::nn::Linear> linear_layers; and fill this vector with some torch::nn::Linear objects, then I can access the weight and bias values by linear_layers[k].weight and linear_layers[k].bias. Same feature is available with other layer types, e.g., torch::nn::Conv2d.



    If create my network using nn::sequential and then push back either of Linear or Conv2d I cannot access the weight and bias directly. Now, my question is how can I access the weight and bias values of each layer when I have used nn::sequential?



    Thanks,
    Afshin










    share|improve this question


























      1












      1








      1








      If I define std::vector<torch::nn::Linear> linear_layers; and fill this vector with some torch::nn::Linear objects, then I can access the weight and bias values by linear_layers[k].weight and linear_layers[k].bias. Same feature is available with other layer types, e.g., torch::nn::Conv2d.



      If create my network using nn::sequential and then push back either of Linear or Conv2d I cannot access the weight and bias directly. Now, my question is how can I access the weight and bias values of each layer when I have used nn::sequential?



      Thanks,
      Afshin










      share|improve this question














      If I define std::vector<torch::nn::Linear> linear_layers; and fill this vector with some torch::nn::Linear objects, then I can access the weight and bias values by linear_layers[k].weight and linear_layers[k].bias. Same feature is available with other layer types, e.g., torch::nn::Conv2d.



      If create my network using nn::sequential and then push back either of Linear or Conv2d I cannot access the weight and bias directly. Now, my question is how can I access the weight and bias values of each layer when I have used nn::sequential?



      Thanks,
      Afshin







      libtorch






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 28 at 13:21









      Afshin OroojlooyAfshin Oroojlooy

      5529 silver badges25 bronze badges




      5529 silver badges25 bronze badges

























          1 Answer
          1






          active

          oldest

          votes


















          1
















          Here is the soultion: [see the link https://discuss.pytorch.org/t/common-class-of-linear-conv-etc/39987/8 ]



          include



          using namespace torch;
          using namespace torch::nn;



          int main()

          auto net = Sequential(Conv2d(1 /input channels/, 1 /output channels/, 2 /kernel size/),
          Conv2d(1, 1, 2));



          for (auto& p : net->named_parameters()) 

          NoGradGuard no_grad;

          // Access name.
          std::cout << p.key() << std::endl;

          // Access weigth and bias.
          p.value().zero_(); // set all zero
          std::cout << p.value() << std::endl;


          return 0;



          The layers of a sequential, have the following naming convention: ., e.g. see the console output



          0.weight # name of the layer
          (1,1,.,.) =
          0 0
          0 0
          [ Variable[CPUFloatType]1,1,2,2 ]
          0.bias
          0
          [ Variable[CPUFloatType]1 ]
          1.weight
          (1,1,.,.) =
          0 0
          0 0
          [ Variable[CPUFloatType]1,1,2,2 ]
          1.bias
          0
          [ Variable[CPUFloatType]1 ]





          share|improve this answer


























            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );














            draft saved

            draft discarded
















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55398723%2faccess-weight-and-bias-with-nnsequential%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1
















            Here is the soultion: [see the link https://discuss.pytorch.org/t/common-class-of-linear-conv-etc/39987/8 ]



            include



            using namespace torch;
            using namespace torch::nn;



            int main()

            auto net = Sequential(Conv2d(1 /input channels/, 1 /output channels/, 2 /kernel size/),
            Conv2d(1, 1, 2));



            for (auto& p : net->named_parameters()) 

            NoGradGuard no_grad;

            // Access name.
            std::cout << p.key() << std::endl;

            // Access weigth and bias.
            p.value().zero_(); // set all zero
            std::cout << p.value() << std::endl;


            return 0;



            The layers of a sequential, have the following naming convention: ., e.g. see the console output



            0.weight # name of the layer
            (1,1,.,.) =
            0 0
            0 0
            [ Variable[CPUFloatType]1,1,2,2 ]
            0.bias
            0
            [ Variable[CPUFloatType]1 ]
            1.weight
            (1,1,.,.) =
            0 0
            0 0
            [ Variable[CPUFloatType]1,1,2,2 ]
            1.bias
            0
            [ Variable[CPUFloatType]1 ]





            share|improve this answer































              1
















              Here is the soultion: [see the link https://discuss.pytorch.org/t/common-class-of-linear-conv-etc/39987/8 ]



              include



              using namespace torch;
              using namespace torch::nn;



              int main()

              auto net = Sequential(Conv2d(1 /input channels/, 1 /output channels/, 2 /kernel size/),
              Conv2d(1, 1, 2));



              for (auto& p : net->named_parameters()) 

              NoGradGuard no_grad;

              // Access name.
              std::cout << p.key() << std::endl;

              // Access weigth and bias.
              p.value().zero_(); // set all zero
              std::cout << p.value() << std::endl;


              return 0;



              The layers of a sequential, have the following naming convention: ., e.g. see the console output



              0.weight # name of the layer
              (1,1,.,.) =
              0 0
              0 0
              [ Variable[CPUFloatType]1,1,2,2 ]
              0.bias
              0
              [ Variable[CPUFloatType]1 ]
              1.weight
              (1,1,.,.) =
              0 0
              0 0
              [ Variable[CPUFloatType]1,1,2,2 ]
              1.bias
              0
              [ Variable[CPUFloatType]1 ]





              share|improve this answer





























                1














                1










                1









                Here is the soultion: [see the link https://discuss.pytorch.org/t/common-class-of-linear-conv-etc/39987/8 ]



                include



                using namespace torch;
                using namespace torch::nn;



                int main()

                auto net = Sequential(Conv2d(1 /input channels/, 1 /output channels/, 2 /kernel size/),
                Conv2d(1, 1, 2));



                for (auto& p : net->named_parameters()) 

                NoGradGuard no_grad;

                // Access name.
                std::cout << p.key() << std::endl;

                // Access weigth and bias.
                p.value().zero_(); // set all zero
                std::cout << p.value() << std::endl;


                return 0;



                The layers of a sequential, have the following naming convention: ., e.g. see the console output



                0.weight # name of the layer
                (1,1,.,.) =
                0 0
                0 0
                [ Variable[CPUFloatType]1,1,2,2 ]
                0.bias
                0
                [ Variable[CPUFloatType]1 ]
                1.weight
                (1,1,.,.) =
                0 0
                0 0
                [ Variable[CPUFloatType]1,1,2,2 ]
                1.bias
                0
                [ Variable[CPUFloatType]1 ]





                share|improve this answer















                Here is the soultion: [see the link https://discuss.pytorch.org/t/common-class-of-linear-conv-etc/39987/8 ]



                include



                using namespace torch;
                using namespace torch::nn;



                int main()

                auto net = Sequential(Conv2d(1 /input channels/, 1 /output channels/, 2 /kernel size/),
                Conv2d(1, 1, 2));



                for (auto& p : net->named_parameters()) 

                NoGradGuard no_grad;

                // Access name.
                std::cout << p.key() << std::endl;

                // Access weigth and bias.
                p.value().zero_(); // set all zero
                std::cout << p.value() << std::endl;


                return 0;



                The layers of a sequential, have the following naming convention: ., e.g. see the console output



                0.weight # name of the layer
                (1,1,.,.) =
                0 0
                0 0
                [ Variable[CPUFloatType]1,1,2,2 ]
                0.bias
                0
                [ Variable[CPUFloatType]1 ]
                1.weight
                (1,1,.,.) =
                0 0
                0 0
                [ Variable[CPUFloatType]1,1,2,2 ]
                1.bias
                0
                [ Variable[CPUFloatType]1 ]






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Jun 27 at 18:21









                Afshin Oroojlooy

                5529 silver badges25 bronze badges




                5529 silver badges25 bronze badges










                answered Jun 27 at 18:19









                Davood HajinezhadDavood Hajinezhad

                314 bronze badges




                314 bronze badges





















                    Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.







                    Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.




















                    draft saved

                    draft discarded















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55398723%2faccess-weight-and-bias-with-nnsequential%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

                    용인 삼성생명 블루밍스 목차 통계 역대 감독 선수단 응원단 경기장 같이 보기 외부 링크 둘러보기 메뉴samsungblueminx.comeh선수 명단용인 삼성생명 블루밍스용인 삼성생명 블루밍스ehsamsungblueminx.comeheheheh

                    155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해