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

                    How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

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

                    Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?