Module ve Parameter
Modül ağacı, gradyanlar ve modlar.
01Ortak arayüz#
forward(const Tensor&) ve backward(const Tensor&) saf sanaldır. Yeni modül eğitim modundadır. train/eval kayıtlı çocuklara yayılır. eval gradyanı kapatan no-grad modu değildir.
02Öğrenilebilir değer#
Parameter data, grad, requires_grad içerir. grad sıfır başlar. requires_grad=false ilgili parametre türevini durdurur; giriş türevi hesaplanır. accumulate_grad_locked replikaları adım dışında toplar; yalnız eleman sayısını kontrol eder.
03Kayıt ve dolaşım#
parameters ham işaretçi listesi; named_parameters hiyerarşik isimler verir. register_parameter ağırlık, register_buffer öğrenilmeyen durum, register_module çocuk kaydeder. Aynı parametre birden çok yoldan kaydedilirse tekilleştirme yapılmaz.
04Kendi katmanınız#
Parametre türevlerini += ile biriktirin. Çalışma tamponlarını nesnede tutun; son forward önbelleğinin yaşam süresine dikkat edin.
class Scale : public Module { public: Tensor forward(const Tensor& x) override { y_.resize_like(x); for (std::size_t i=0;i<x.numel();++i) y_[i]=2*x[i]; return y_; } Tensor backward(const Tensor& dy) override { dx_.resize_like(dy); for (std::size_t i=0;i<dy.numel();++i) dx_[i]=2*dy[i]; return dx_; } private: Tensor y_, dx_;};