A Python - éterek () nem frissülnek a lineáris regresszióban a Pytorch - verem túlcsordulásával
Újonc vagyok a mély tanulásban Pytorch-szal. Itt használom a Kaggle lakásárak adatkészletét. Az első 50 sorral kipróbáltam a mintavételt. De a model.parameters () nem frissül, amikor elvégzem a képzést. Tudna valaki segíteni?

1 Válasz 1
A súly ugyan frissül, de nem jól rögzítetted. A model.weight.data egy fáklyatenzor, de a változó neve csak hivatkozás, így a w = model.weight.data beállítás nem másolatot, hanem újabb hivatkozást hoz létre az objektumra. Ezért a model.weight.data megváltoztatása megváltoztatná w-t is.
Tehát a w = model.weight.data és a w_new = model.weight adatok beállításával a hurkok különböző részein azt jelenti, hogy két referenciát rendel hozzá ugyanahhoz az objektumhoz, így azok értéke mindig egyenlő lesz.
Annak felmérése érdekében, hogy a modell súlya változik, vagy nyomtassa ki (model.weight.data) a ciklus előtt és után (mivel egy lineáris 10 paraméteres réteget kapott, még mindig rendben van), vagy egyszerűen állítsa be a w = model.weight .data.klón (). Ebben az esetben a kimenet a következő lesz:
Íme egy példa, amely megmutatja, hogy a súlya változik: