Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LSTMOptionFunc ¶
type LSTMOptionFunc func(*LSTMT)
func WithLSTMSource ¶
func WithLSTMSource(s randv2.Source) LSTMOptionFunc
type LSTMT ¶
type LSTMT struct { Layers // contains filtered or unexported fields }
func LSTM ¶
func LSTM(hiddenSize int, opts ...LSTMOptionFunc) *LSTMT
Example ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.LSTM(2, L.WithLSTMSource(rand.Const())) x := variable.New(1) y := l.Forward(x) fmt.Printf("%.4f\n", y[0].Data) for k, v := range l.Params() { fmt.Println(k, v.Data) } }
Output: [[-0.1159 0.3410]] h2i.w [[0.7721305559619605 -0.3138383577766621] [-0.1774465290440516 0.6058784343349307]] h2u.w [[-0.1863471272377204 -0.2731476909916124] [-0.22971366432393717 -0.9748342951297205]] x2f.b [[0 0]] x2i.b [[0 0]] x2i.w [[0.6683845105491564 0.5224173744445297]] x2u.w [[-0.3459245000660268 2.3596405779473866]] h2f.w [[0.4006014980172961 -0.4330302800303532] [0.4171185512277987 -0.260091010167568]] x2f.w [[1.4794951368388003 -0.7850500761442023]] x2o.b [[0 0]] x2o.w [[0.14228008038102535 0.49557472469859015]] x2u.b [[0 0]] h2o.w [[0.5131618329299671 0.6022410956921772] [-1.4567160689766936 -0.4395064776168111]]
Example (Backward) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.LSTM(2, L.WithLSTMSource(rand.Const())) x := variable.New(1) y := l.First(x) y.Backward() y = l.First(x) y.Backward() for k, v := range l.Params() { fmt.Println(k, v.Grad) } }
Output: x2o.b variable([-0.1467619739042175 0.3035778427291682]) x2o.w variable([-0.1467619739042175 0.3035778427291682]) x2u.b variable([0.6280410802257455 0.024737661571790713]) h2i.w variable([[0.0034706005215721916 -0.007235676351057161] [-0.010207401373028816 0.02128088561662388]]) x2f.b variable([-0.010462855229162323 0.038890543079566985]) x2i.b variable([-0.086848478802109 0.18688211132241805]) x2i.w variable([-0.086848478802109 0.18688211132241805]) x2u.w variable([0.6280410802257455 0.024737661571790713]) h2f.w variable([[0.0012131372656231042 -0.004509243992848472] [-0.003567964366346655 0.013262161126822158]]) h2o.w variable([[0.01106944986063837 -0.019636718150272264] [-0.03255641696698899 0.05775365460904995]]) h2u.w variable([[-0.020773992595966805 -0.001484667253885979] [0.06109849843833466 0.0043665626371028115]]) x2f.w variable([-0.010462855229162323 0.038890543079566985])
Example (Cleargrads) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.LSTM(3) x := variable.New(1) y := l.First(x) y.Backward() l.Cleargrads() for k, v := range l.Params() { fmt.Println(k, v.Grad) } }
Output: x2f.w <nil> x2f.b <nil> x2i.w <nil> x2i.b <nil> x2o.w <nil> x2o.b <nil> x2u.w <nil> x2u.b <nil> h2f.w <nil> h2i.w <nil> h2o.w <nil> h2u.w <nil>
func (*LSTMT) ResetState ¶
func (l *LSTMT) ResetState()
Example ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.LSTM(3) x := variable.New(1) l.Forward(x) // set hidden state l.ResetState() // reset hidden state l.Forward(x) // h2h is not used for k := range l.Params() { fmt.Println(k) } }
Output: x2f.w x2f.b x2i.w x2i.b x2o.w x2o.b x2u.w x2u.b h2f.w h2i.w h2o.w h2u.w
type Layers ¶
func (Layers) Cleargrads ¶
func (l Layers) Cleargrads()
func (Layers) Params ¶
func (l Layers) Params() Parameters
type LinearT ¶
type LinearT struct { Parameters // contains filtered or unexported fields }
func Linear ¶
func Linear(outSize int, opts ...OptionFunc) *LinearT
Example ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.Linear(5, L.WithSource(rand.Const())) x := variable.New(1, 2, 3) y := l.Forward(x) fmt.Printf("%.4f\n", y[0].Data) for _, v := range l.Params() { fmt.Println(v) } }
Output: [[-3.7536 -1.7199 0.8735 -0.0434 1.0512]] b([0 0 0 0 0]) w([[0.32708975344564756 -0.35356774308295924 0.34057587091902425 -0.21236342053185778 0.630441958972765] [-0.25624794608861706 -0.1448844842619606 0.4946976700923148 0.41899488204992313 0.49172779552683027] [-1.1894036897019482 -0.3588555362697145 -0.15215179225530268 -0.2230241557829546 -0.18756042151287408]])
Example (Backward) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.Linear(5) x := variable.New(1, 2, 3) y := l.Forward(x) y[0].Backward() for _, v := range l.Params() { fmt.Println(v.Name, v.Grad) } y = l.Forward(variable.New(1, 2, 3)) y[0].Backward() for _, v := range l.Params() { fmt.Println(v.Name, v.Grad) } }
Output: b variable([1 1 1 1 1]) w variable([[1 1 1 1 1] [2 2 2 2 2] [3 3 3 3 3]]) b variable([2 2 2 2 2]) w variable([[2 2 2 2 2] [4 4 4 4 4] [6 6 6 6 6]])
Example (InSize) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.Linear(5, L.WithSource(rand.Const()), L.WithInSize(3), ) x := variable.New(1, 2, 3) y := l.Forward(x) fmt.Printf("%.4f\n", y[0].Data) for _, v := range l.Params() { fmt.Println(v) } }
Output: [[-3.7536 -1.7199 0.8735 -0.0434 1.0512]] b([0 0 0 0 0]) w([[0.32708975344564756 -0.35356774308295924 0.34057587091902425 -0.21236342053185778 0.630441958972765] [-0.25624794608861706 -0.1448844842619606 0.4946976700923148 0.41899488204992313 0.49172779552683027] [-1.1894036897019482 -0.3588555362697145 -0.15215179225530268 -0.2230241557829546 -0.18756042151287408]])
Example (Nobias) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.Linear(5, L.WithNoBias()) x := variable.New(1, 2, 3) l.Forward(x) for _, v := range l.Params() { fmt.Println(v.Name) } }
Output: w
type OptionFunc ¶
type OptionFunc func(*LinearT)
func WithInSize ¶
func WithInSize(inSize int) OptionFunc
func WithNoBias ¶
func WithNoBias() OptionFunc
func WithSource ¶
func WithSource(s randv2.Source) OptionFunc
type Parameters ¶
func (Parameters) Add ¶
func (p Parameters) Add(name string, param Parameter)
func (Parameters) Cleargrads ¶
func (p Parameters) Cleargrads()
Example ¶
package main import ( "fmt" "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { v := variable.New(1, 2) v.Grad = variable.New(3, 4) p := make(layer.Parameters) p.Add("w", v) p.Cleargrads() for _, v := range p { fmt.Println(v, v.Grad) } }
Output: w([1 2]) <nil>
func (Parameters) Delete ¶
func (p Parameters) Delete(name string)
func (Parameters) Params ¶
func (p Parameters) Params() Parameters
Example ¶
package main import ( "fmt" "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { p := make(layer.Parameters) p.Add("w", variable.New(1, 2)) p.Add("b", variable.New(3, 4)) for _, v := range p.Params() { fmt.Println(v) } }
Output: w([1 2]) b([3 4])
type RNNOptionFunc ¶
type RNNOptionFunc func(*RNNT)
func WithRNNSource ¶
func WithRNNSource(s randv2.Source) RNNOptionFunc
type RNNT ¶
type RNNT struct { Layers // contains filtered or unexported fields }
func RNN ¶
func RNN(hiddenSize int, opts ...RNNOptionFunc) *RNNT
Example ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.RNN(2, L.WithRNNSource(rand.Const())) x := variable.New(1) y := l.Forward(x) fmt.Printf("%.4f\n", y[0].Data) for k, v := range l.Params() { fmt.Println(k, v.Data) } }
Output: [[0.7976 -0.4168]] x2h.b [[0 0]] x2h.w [[1.0919575041640825 -0.4438344619606553]] h2h.w [[0.4006014980172961 -0.4330302800303532] [0.4171185512277987 -0.260091010167568]]
Example (Backward) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/rand" "github.com/itsubaki/autograd/variable" ) func main() { l := L.RNN(2, L.WithRNNSource(rand.Const())) x := variable.New(1) y := l.First(x) y.Backward() for k, v := range l.Params() { fmt.Println(k, v.Grad) } fmt.Println(".") y = l.First(x) y.Backward() for k, v := range l.Params() { fmt.Println(k, v.Grad) } }
Output: h2h.w <nil> x2h.w variable([0.3638478140516499 0.8262629446866991]) x2h.b variable([0.3638478140516499 0.8262629446866991]) . x2h.w variable([0.5896143925532906 1.4348651282031906]) h2h.w variable([[0.22839718521198515 0.5180241623919872] [-0.11935935508160048 -0.2707171276318745]]) x2h.b variable([0.5896143925532906 1.4348651282031906])
Example (Cleargrads) ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.RNN(3) x := variable.New(1) y := l.First(x) y.Backward() l.Cleargrads() for k, v := range l.Params() { fmt.Println(k, v.Grad) } }
Output: x2h.w <nil> x2h.b <nil> h2h.w <nil>
func (*RNNT) ResetState ¶
func (l *RNNT) ResetState()
Example ¶
package main import ( "fmt" L "github.com/itsubaki/autograd/layer" "github.com/itsubaki/autograd/variable" ) func main() { l := L.RNN(3) x := variable.New(1) l.Forward(x) // set hidden state l.ResetState() // reset hidden state l.Forward(x) // h2h is not used for _, v := range l.Params() { fmt.Println(v.Name) } }
Output: w b w
Click to show internal directories.
Click to hide internal directories.