From 8347444e83f9071cccad5ac49ceda39a51458097 Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Tue, 20 Jun 2023 23:46:25 +0700 Subject: [PATCH 1/9] tugas Chapter 01 --- Chapter01/RPL/714222073/GreatLearning.jpg | Bin 0 -> 46893 bytes Chapter01/RPL/714222073/go.mod | 26 ++ Chapter01/RPL/714222073/go.sum | 203 +++++++++++ Chapter01/RPL/714222073/main.go | 49 +++ Chapter01/RPL/714222073/readme.md | 2 + Chapter03/mnist_feedforward/main.go | 393 +--------------------- 6 files changed, 294 insertions(+), 379 deletions(-) create mode 100644 Chapter01/RPL/714222073/GreatLearning.jpg create mode 100644 Chapter01/RPL/714222073/go.mod create mode 100644 Chapter01/RPL/714222073/go.sum create mode 100644 Chapter01/RPL/714222073/main.go create mode 100644 Chapter01/RPL/714222073/readme.md diff --git a/Chapter01/RPL/714222073/GreatLearning.jpg b/Chapter01/RPL/714222073/GreatLearning.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f84294f5a554705d3103fcc0d15d7944d3c69d67 GIT binary patch literal 46893 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 literal 0 HcmV?d00001 diff --git a/Chapter01/RPL/714222073/go.mod b/Chapter01/RPL/714222073/go.mod new file mode 100644 index 00000000..65a27bce --- /dev/null +++ b/Chapter01/RPL/714222073/go.mod @@ -0,0 +1,26 @@ +module github.com/DiniLubis/ai + +go 1.20 + +require ( + github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db // indirect + github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca // indirect + github.com/chewxy/hm v1.0.0 // indirect + github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 // indirect + github.com/gogo/protobuf v1.3.1 // indirect + github.com/golang/protobuf v1.4.3 // indirect + github.com/google/flatbuffers v1.12.0 // indirect + github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/xtgo/set v1.0.0 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gonum.org/v1/gonum v0.8.2 // indirect + google.golang.org/protobuf v1.25.0 // indirect + gorgonia.org/cu v0.9.3 // indirect + gorgonia.org/dawson v1.2.0 // indirect + gorgonia.org/gorgonia v0.9.17 // indirect + gorgonia.org/tensor v0.9.17 // indirect + gorgonia.org/vecf32 v0.9.0 // indirect + gorgonia.org/vecf64 v0.9.0 // indirect +) diff --git a/Chapter01/RPL/714222073/go.sum b/Chapter01/RPL/714222073/go.sum new file mode 100644 index 00000000..c8fde53a --- /dev/null +++ b/Chapter01/RPL/714222073/go.sum @@ -0,0 +1,203 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/apache/arrow/go/arrow v0.0.0-20201229220542-30ce2eb5d4dc/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db h1:x5taMU/KYJ8djMqp6eLMHQdcf6RZ+19lmAH7XTK6tmo= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca h1:xwIXr1FpA2XBoohlpvgb11No/zbsh5Clm/98PWPcHVA= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chewxy/hm v1.0.0 h1:zy/TSv3LV2nD3dwUEQL2VhXeoXbb9QkpmdRAVUFiA6k= +github.com/chewxy/hm v1.0.0/go.mod h1:qg9YI4q6Fkj/whwHR1D+bOGeF7SniIP40VweVepLjg0= +github.com/chewxy/math32 v1.0.0/go.mod h1:Miac6hA1ohdDUTagnvJy/q+aNnEk16qWUdb8ZVhvCN0= +github.com/chewxy/math32 v1.0.6/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 h1:tYETMGvGcSl1GOLy7hjtvueM/Ax1rn9hpeD3fgbNdT0= +github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20190808011637-b1ec8c586c2a/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cznic/cc v0.0.0-20181122101902-d673e9b70d4d/go.mod h1:m3fD/V+XTB35Kh9zw6dzjMY+We0Q7PMf6LLIC4vuG9k= +github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= +github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= +github.com/cznic/xc v0.0.0-20181122101856-45b06973881e/go.mod h1:3oFoiOvCDBYH+swwf5+k/woVmWy7h1Fcyu8Qig/jjX0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/google/flatbuffers v1.10.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= +github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/gorgonia/bindgen v0.0.0-20180812032444-09626750019e/go.mod h1:YzKk63P9jQHkwAo2rXHBv02yPxDzoQT2cBV0x5bGV/8= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 h1:O75p5GUdUfhJqNCMM1ntthjtJCOHVa1lzMSfh5Qsa0Y= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xtgo/set v1.0.0 h1:6BCNBRv3ORNDQ7fyoJXRv+tstJz3m1JVFQErfeZz2pY= +github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 h1:WJhcL4p+YeDxmZWg141nRm7XC8IDmhz7lk5GpadO1Sg= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190226215855-775f8194d0f9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20190226202314-149afe6ec0b6/go.mod h1:jevfED4GnIEnJrWW55YmY9DMhajHcnkqVnEXmEtMyNI= +gonum.org/v1/gonum v0.0.0-20190902003836-43865b531bee/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.8.1-0.20200930085651-eea0b5cb5cc9/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/netlib v0.0.0-20190221094214-0632e2ebbd2d/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658/go.mod h1:zQa7n16lh3Z6FbSTYgjG+KNhz1bA/b9t3plFEaGMp+A= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200910201057-6591123024b3/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorgonia.org/cu v0.9.0-beta/go.mod h1:RPEPIfaxxqUmeRe7T1T8a0NER+KxBI2McoLEXhP1Vd8= +gorgonia.org/cu v0.9.3 h1:IkxE4NWXuZHqr8AnmgoB8WNQPZeD6u0EJNxYjDC0YgY= +gorgonia.org/cu v0.9.3/go.mod h1:LgyAYDkN7HWhh8orGnCY2R8pP9PYbO44ivEbLMatkVU= +gorgonia.org/dawson v1.1.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/dawson v1.2.0 h1:hJ/aofhfkReSnJdSMDzypRZ/oWDL1TmeYOauBnXKdFw= +gorgonia.org/dawson v1.2.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/gorgonia v0.9.2/go.mod h1:ZtOb9f/wM2OMta1ISGspQ4roGDgz9d9dKOaPNvGR+ec= +gorgonia.org/gorgonia v0.9.17 h1:CJOQfgQA5fYd24vPiKKf6v98fRk71s1P7d2GjXNRjVE= +gorgonia.org/gorgonia v0.9.17/go.mod h1:g66b5Z6ATUdhVqYl2ZAAwblv5hnGW08vNinGLcnrceI= +gorgonia.org/tensor v0.9.0-beta/go.mod h1:05Y4laKuVlj4qFoZIZW1q/9n1jZkgDBOLmKXZdBLG1w= +gorgonia.org/tensor v0.9.17 h1:unwQMCzKTdS1tZwYr5M0AtIPVISWm97CecKBBB7bcZI= +gorgonia.org/tensor v0.9.17/go.mod h1:75SMdLLhZ+2oB0/EE8lFEIt1Caoykdd4bz1mAe59deg= +gorgonia.org/vecf32 v0.7.0/go.mod h1:iHG+kvTMqGYA0SgahfO2k62WRnxmHsqAREGbayRDzy8= +gorgonia.org/vecf32 v0.9.0 h1:PClazic1r+JVJ1dEzRXgeiVl4g1/Hf/w+wUSqnco1Xg= +gorgonia.org/vecf32 v0.9.0/go.mod h1:NCc+5D2oxddRL11hd+pCB1PEyXWOyiQxfZ/1wwhOXCA= +gorgonia.org/vecf64 v0.7.0/go.mod h1:1y4pmcSd+wh3phG+InwWQjYrqwyrtN9h27WLFVQfV1Q= +gorgonia.org/vecf64 v0.9.0 h1:bgZDP5x0OzBF64PjMGC3EvTdOoMEcmfAh1VCUnZFm1A= +gorgonia.org/vecf64 v0.9.0/go.mod h1:hp7IOWCnRiVQKON73kkC/AUMtEXyf9kGlVrtPQ9ccVA= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/Chapter01/RPL/714222073/main.go b/Chapter01/RPL/714222073/main.go new file mode 100644 index 00000000..58581a45 --- /dev/null +++ b/Chapter01/RPL/714222073/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "fmt" + + "gorgonia.org/gorgonia" +) + +func main() { + g := gorgonia.NewGraph() + + // definisi konstanta a dan b + a := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("a")) + b := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("b")) + + // definisi variabel x dan y + x := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("x")) + y := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("y")) + + // persamaan elips ((x/a)^2) + ((y/b)^2) - 1 + form1 := gorgonia.Must(gorgonia.Pow(x, gorgonia.NewConstant(2.0))) + form2 := gorgonia.Must(gorgonia.Pow(y, gorgonia.NewConstant(2.0))) + form3 := gorgonia.Must(gorgonia.Pow(a, gorgonia.NewConstant(2.0))) + form4 := gorgonia.Must(gorgonia.Pow(b, gorgonia.NewConstant(2.0))) + form5 := gorgonia.Must(gorgonia.Div(form1, form3)) + form6 := gorgonia.Must(gorgonia.Div(form2, form4)) + form7 := gorgonia.Must(gorgonia.Add(form5, form6)) + form8 := gorgonia.Must(gorgonia.Sub(gorgonia.NewConstant(1.0), form7)) + + // kompilasi dan eksekusi graph + machine := gorgonia.NewTapeMachine(g) + defer machine.Close() + + // inisiasi nilai konstanta a dan b + gorgonia.Let(a, 2.0) + gorgonia.Let(b, 4.0) + + // inisiasi nilai variabel x dan y + gorgonia.Let(x, 1.0) + gorgonia.Let(y, 3.0) + + // jalankan perhitungan + if err := machine.RunAll(); err != nil { + fmt.Println(err) + } + + // tampilkan hasil + fmt.Printf("Hasilnya : %v", form8.Value().Data()) +} diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md new file mode 100644 index 00000000..794fde8f --- /dev/null +++ b/Chapter01/RPL/714222073/readme.md @@ -0,0 +1,2 @@ +Tugas Chapter01 + diff --git a/Chapter03/mnist_feedforward/main.go b/Chapter03/mnist_feedforward/main.go index 5a83856c..f56b17c6 100644 --- a/Chapter03/mnist_feedforward/main.go +++ b/Chapter03/mnist_feedforward/main.go @@ -1,386 +1,21 @@ package main - import ( - "encoding/csv" - "flag" - "fmt" - "image" - "image/jpeg" - "log" - "math" - "math/rand" - "os" - "strconv" - - _ "net/http/pprof" - - "github.com/pkg/errors" - "gorgonia.org/gorgonia" - "gorgonia.org/gorgonia/examples/mnist" - "gorgonia.org/tensor" - - "time" - - "gopkg.in/cheggaaa/pb.v1" -) - -var ( - epochs = flag.Int("epochs", 100, "Number of epochs to train for") - dataset = flag.String("dataset", "train", "Which dataset to train on? Valid options are \"train\" or \"test\"") - dtype = flag.String("dtype", "float64", "Which dtype to use") - batchsize = flag.Int("batchsize", 100, "Batch size") - cpuprofile = flag.String("cpuprofile", "", "CPU profiling") -) - -const loc = "./mnist/" - -var dt tensor.Dtype - -func parseDtype() { - switch *dtype { - case "float64": - dt = tensor.Float64 - case "float32": - dt = tensor.Float32 - default: - log.Fatalf("Unknown dtype: %v", *dtype) - } -} - -type nn struct { - g *gorgonia.ExprGraph - w0, w1, w2 *gorgonia.Node - - out *gorgonia.Node - predVal gorgonia.Value -} - -type sli struct { - start, end int -} - -func (s sli) Start() int { return s.start } -func (s sli) End() int { return s.end } -func (s sli) Step() int { return 1 } - -func newNN(g *gorgonia.ExprGraph) *nn { - // Create node for w/weight - w0 := gorgonia.NewMatrix(g, dt, gorgonia.WithShape(784, 300), gorgonia.WithName("w0"), gorgonia.WithInit(gorgonia.GlorotN(1.0))) - w1 := gorgonia.NewMatrix(g, dt, gorgonia.WithShape(300, 100), gorgonia.WithName("w1"), gorgonia.WithInit(gorgonia.GlorotN(1.0))) - w2 := gorgonia.NewMatrix(g, dt, gorgonia.WithShape(100, 10), gorgonia.WithName("w2"), gorgonia.WithInit(gorgonia.GlorotN(1.0))) - - return &nn{ - g: g, - w0: w0, - w1: w1, - w2: w2, - } -} - -func (m *nn) learnables() gorgonia.Nodes { - return gorgonia.Nodes{m.w0, m.w1, m.w2} -} - -func (m *nn) fwd(x *gorgonia.Node) (err error) { - var l0, l1, l2 *gorgonia.Node - var l0dot, l1dot *gorgonia.Node - - // Set first layer to be copy of input - l0 = x - - // Dot product of l0 and w0, use as input for ReLU - if l0dot, err = gorgonia.Mul(l0, m.w0); err != nil { - return errors.Wrap(err, "Unable to multiply l0 and w0") - } - - // l0dot := gorgonia.Must(gorgonia.Mul(l0, m.w0)) - - // Build hidden layer out of result - l1 = gorgonia.Must(gorgonia.Rectify(l0dot)) - - // MOAR layers - // l2dot := gorgonia.Must(gorgonia.Mul(l1, m.w1)) - - if l1dot, err = gorgonia.Mul(l1, m.w1); err != nil { - return errors.Wrap(err, "Unable to multiply l1 and w1") - } - l2 = gorgonia.Must(gorgonia.Rectify(l1dot)) - - var out *gorgonia.Node - if out, err = gorgonia.Mul(l2, m.w2); err != nil { - return errors.Wrapf(err, "Unable to multiply l2 and w2") - } - - // m.pred = l3dot - // gorgonia.Read(m.pred, &m.predVal) - // return nil - - m.out, err = gorgonia.SoftMax(out) - gorgonia.Read(m.out, &m.predVal) - return - -} - -const pixelRange = 255 - -func reversePixelWeight(px float64) byte { - // return byte((pixelRange*px - pixelRange) / 0.9) - return byte(pixelRange*math.Min(0.99, math.Max(0.01, px)) - pixelRange) -} - -func visualizeRow(x []float64) *image.Gray { - // since this is a square, we can take advantage of that - l := len(x) - side := int(math.Sqrt(float64(l))) - r := image.Rect(0, 0, side, side) - img := image.NewGray(r) - - pix := make([]byte, l) - for i, px := range x { - pix[i] = reversePixelWeight(px) - } - img.Pix = pix - - return img -} - -func main() { - flag.Parse() - parseDtype() - rand.Seed(7945) - - // // intercept Ctrl+C - // sigChan := make(chan os.Signal, 1) - // signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) - // doneChan := make(chan bool, 1) - - var inputs, targets tensor.Tensor - var err error - - // load our data set - trainOn := *dataset - if inputs, targets, err = mnist.Load(trainOn, loc, dt); err != nil { - log.Fatal(err) - } - - numExamples := inputs.Shape()[0] - bs := *batchsize - - // MNIST data consists of 28 by 28 black and white images - // however we've imported it directly now as 784 different pixels - // as a result, we need to reshape it to match what we actually want - // if err := inputs.Reshape(numExamples, 1, 28, 28); err != nil { - // log.Fatal(err) - // } - - // we should now also proceed to put in our desired variables - // x is where our input should go, while y is the desired output - g := gorgonia.NewGraph() - // x := gorgonia.NewTensor(g, dt, 4, gorgonia.WithShape(bs, 1, 28, 28), gorgonia.WithName("x")) - x := gorgonia.NewMatrix(g, dt, gorgonia.WithShape(bs, 784), gorgonia.WithName("x")) - y := gorgonia.NewMatrix(g, dt, gorgonia.WithShape(bs, 10), gorgonia.WithName("y")) - - // ioutil.WriteFile("simple_graph.dot", []byte(g.ToDot()), 0644) - - m := newNN(g) - if err = m.fwd(x); err != nil { - log.Fatalf("%+v", err) - } - - // ioutil.WriteFile("simple_graph_2.dot", []byte(g.ToDot()), 0644) - - losses, err := gorgonia.HadamardProd(m.out, y) - if err != nil { - log.Fatal(err) - } - cost := gorgonia.Must(gorgonia.Mean(losses)) - cost = gorgonia.Must(gorgonia.Neg(cost)) - - // we wanna track costs - var costVal gorgonia.Value - gorgonia.Read(cost, &costVal) - - if _, err = gorgonia.Grad(cost, m.learnables()...); err != nil { - log.Fatal(err) - } - - vm := gorgonia.NewTapeMachine(g, gorgonia.BindDualValues(m.learnables()...)) - solver := gorgonia.NewRMSPropSolver(gorgonia.WithBatchSize(float64(bs))) - - batches := numExamples / bs - log.Printf("Batches %d", batches) - bar := pb.New(batches) - bar.SetRefreshRate(time.Second / 20) - bar.SetMaxWidth(80) - - for i := 0; i < *epochs; i++ { - // for i := 0; i < 1; i++ { - bar.Prefix(fmt.Sprintf("Epoch %d", i)) - bar.Set(0) - bar.Start() - for b := 0; b < batches; b++ { - start := b * bs - end := start + bs - if start >= numExamples { - break - } - if end > numExamples { - end = numExamples - } - - var xVal, yVal tensor.Tensor - if xVal, err = inputs.Slice(sli{start, end}); err != nil { - log.Fatal("Unable to slice x") - } - - if yVal, err = targets.Slice(sli{start, end}); err != nil { - log.Fatal("Unable to slice y") - } - // if err = xVal.(*tensor.Dense).Reshape(bs, 1, 28, 28); err != nil { - // log.Fatal("Unable to reshape %v", err) - // } - if err = xVal.(*tensor.Dense).Reshape(bs, 784); err != nil { - log.Fatal("Unable to reshape %v", err) - } - - gorgonia.Let(x, xVal) - gorgonia.Let(y, yVal) - if err = vm.RunAll(); err != nil { - log.Fatalf("Failed at epoch %d: %v", i, err) - } - // solver.Step(m.learnables()) - solver.Step(gorgonia.NodesToValueGrads(m.learnables())) - vm.Reset() - bar.Increment() - } - bar.Update() - log.Printf("Epoch %d | cost %v", i, costVal) - } - bar.Finish() - - log.Printf("Run Tests") - - // load our test set - if inputs, targets, err = mnist.Load("test", loc, dt); err != nil { - log.Fatal(err) - } - - numExamples = inputs.Shape()[0] - bs = *batchsize - batches = numExamples / bs - - bar = pb.New(batches) - bar.SetRefreshRate(time.Second / 20) - bar.SetMaxWidth(80) - bar.Prefix(fmt.Sprintf("Epoch Test")) - bar.Set(0) - bar.Start() - for b := 0; b < batches; b++ { - start := b * bs - end := start + bs - if start >= numExamples { - break - } - if end > numExamples { - end = numExamples - } - - var xVal, yVal tensor.Tensor - if xVal, err = inputs.Slice(sli{start, end}); err != nil { - log.Fatal("Unable to slice x") - } - - if yVal, err = targets.Slice(sli{start, end}); err != nil { - log.Fatal("Unable to slice y") - } - // if err = xVal.(*tensor.Dense).Reshape(bs, 1, 28, 28); err != nil { - // log.Fatal("Unable to reshape %v", err) - // } - if err = xVal.(*tensor.Dense).Reshape(bs, 784); err != nil { - log.Fatal("Unable to reshape %v", err) - } - - gorgonia.Let(x, xVal) - gorgonia.Let(y, yVal) - if err = vm.RunAll(); err != nil { - log.Fatalf("Failed at epoch test: %v", err) - } - - arrayOutput := m.predVal.Data().([]float64) - yOutput := tensor.New(tensor.WithShape(bs, 10), tensor.WithBacking(arrayOutput)) - - for j := 0; j < xVal.Shape()[0]; j++ { - rowT, _ := xVal.Slice(sli{j, j + 1}) - row := rowT.Data().([]float64) - - img := visualizeRow(row) - - // get label - yRowT, _ := yVal.Slice(sli{j, j + 1}) - yRow := yRowT.Data().([]float64) - var rowLabel int - var yRowHigh float64 - - for k := 0; k < 10; k++ { - if k == 0 { - rowLabel = 0 - yRowHigh = yRow[k] - } else if yRow[k] > yRowHigh { - rowLabel = k - yRowHigh = yRow[k] - } - } - - // get prediction - predRowT, _ := yOutput.Slice(sli{j, j + 1}) - predRow := predRowT.Data().([]float64) - var rowGuess int - var predRowHigh float64 - - // guess result - for k := 0; k < 10; k++ { - if k == 0 { - rowGuess = 0 - predRowHigh = predRow[k] - } else if predRow[k] > predRowHigh { - rowGuess = k - predRowHigh = predRow[k] - } - } - - f, _ := os.OpenFile(fmt.Sprintf("images/%d - %d - %d - %d.jpg", b, j, rowLabel, rowGuess), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644) - jpeg.Encode(f, img, &jpeg.Options{jpeg.DefaultQuality}) - f.Close() - } - - arrayOutput = m.predVal.Data().([]float64) - yOutput = tensor.New(tensor.WithShape(bs, 10), tensor.WithBacking(arrayOutput)) - - file, err := os.OpenFile(fmt.Sprintf("%d.csv", b), os.O_CREATE|os.O_WRONLY, 0777) - if err = xVal.(*tensor.Dense).Reshape(bs, 784); err != nil { - log.Fatal("Unable to create csv", err) - } - defer file.Close() - var matrixToWrite [][]string + "fmt" + "log" + . "gorgonia.org/gorgonia" + ) - for j := 0; j < yOutput.Shape()[0]; j++ { - rowT, _ := yOutput.Slice(sli{j, j + 1}) - row := rowT.Data().([]float64) - var rowToWrite []string + func main() { + g := NewGraph() + } - for k := 0; k < 10; k++ { - rowToWrite = append(rowToWrite, strconv.FormatFloat(row[k], 'f', 6, 64)) - } - matrixToWrite = append(matrixToWrite, rowToWrite) - } + a = NewScalar(g, Float64, WithName("a")) + b = NewScalar(g, Float64, WithName("b")) - csvWriter := csv.NewWriter(file) - csvWriter.WriteAll(matrixToWrite) - csvWriter.Flush() + c, err = Add(a,b) - vm.Reset() - bar.Increment() - } - log.Printf("Epoch Test | cost %v", costVal) + machine := NewTapeMachine(g) -} + Let(a, 1.0) + Let(b, 2.0) + machine.RunAll() \ No newline at end of file From 966f8cd1afd9a648b15a3dbac2b34da90488680e Mon Sep 17 00:00:00 2001 From: DiniLubis <119611222+DiniLubis@users.noreply.github.com> Date: Tue, 20 Jun 2023 23:49:34 +0700 Subject: [PATCH 2/9] Update readme.md --- Chapter01/RPL/714222073/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md index 794fde8f..a2863853 100644 --- a/Chapter01/RPL/714222073/readme.md +++ b/Chapter01/RPL/714222073/readme.md @@ -1,2 +1,4 @@ Tugas Chapter01 +Membuat kode program persamaan elips = (x/a)^2 + (y/b)^2 = 1 +![hasil running](https://github.com/DiniLubis/ai/assets/119611222/6c295f9f-e89b-4801-ba21-0983bcc67899) From 7907ceeec44d0369a647a3f6313b14559aca4c10 Mon Sep 17 00:00:00 2001 From: DiniLubis <119611222+DiniLubis@users.noreply.github.com> Date: Tue, 20 Jun 2023 23:50:00 +0700 Subject: [PATCH 3/9] Update readme.md --- Chapter01/RPL/714222073/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md index a2863853..ad70f65b 100644 --- a/Chapter01/RPL/714222073/readme.md +++ b/Chapter01/RPL/714222073/readme.md @@ -1,4 +1,6 @@ Tugas Chapter01 Membuat kode program persamaan elips = (x/a)^2 + (y/b)^2 = 1 + +Screenshoot hasil running : ![hasil running](https://github.com/DiniLubis/ai/assets/119611222/6c295f9f-e89b-4801-ba21-0983bcc67899) From 6ca191959d47784fdd8933d986790071baea4c7b Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Wed, 21 Jun 2023 00:06:48 +0700 Subject: [PATCH 4/9] tugas Chapter 01 --- Chapter01/RPL/714222073/main.go | 57 +++++++++++++++------------------ 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/Chapter01/RPL/714222073/main.go b/Chapter01/RPL/714222073/main.go index 58581a45..f76e5101 100644 --- a/Chapter01/RPL/714222073/main.go +++ b/Chapter01/RPL/714222073/main.go @@ -4,46 +4,39 @@ import ( "fmt" "gorgonia.org/gorgonia" + G "gorgonia.org/gorgonia" ) func main() { - g := gorgonia.NewGraph() - - // definisi konstanta a dan b - a := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("a")) - b := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("b")) - - // definisi variabel x dan y - x := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("x")) - y := gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("y")) - - // persamaan elips ((x/a)^2) + ((y/b)^2) - 1 - form1 := gorgonia.Must(gorgonia.Pow(x, gorgonia.NewConstant(2.0))) - form2 := gorgonia.Must(gorgonia.Pow(y, gorgonia.NewConstant(2.0))) - form3 := gorgonia.Must(gorgonia.Pow(a, gorgonia.NewConstant(2.0))) - form4 := gorgonia.Must(gorgonia.Pow(b, gorgonia.NewConstant(2.0))) - form5 := gorgonia.Must(gorgonia.Div(form1, form3)) - form6 := gorgonia.Must(gorgonia.Div(form2, form4)) - form7 := gorgonia.Must(gorgonia.Add(form5, form6)) - form8 := gorgonia.Must(gorgonia.Sub(gorgonia.NewConstant(1.0), form7)) - - // kompilasi dan eksekusi graph - machine := gorgonia.NewTapeMachine(g) - defer machine.Close() + g := G.NewGraph() + + a := gorgonia.NewScalar(g, G.Float64, G.WithName("a")) + b := gorgonia.NewScalar(g, G.Float64, G.WithName("b")) + + x := G.NewScalar(g, G.Float64, G.WithName("x")) + y := G.NewScalar(g, G.Float64, G.WithName("y")) - // inisiasi nilai konstanta a dan b - gorgonia.Let(a, 2.0) - gorgonia.Let(b, 4.0) + form1 := G.Must(G.Pow(x, G.NewConstant(2.0))) + form2 := G.Must(G.Pow(y, G.NewConstant(2.0))) + form3 := G.Must(G.Pow(a, G.NewConstant(2.0))) + form4 := G.Must(G.Pow(b, G.NewConstant(2.0))) + form5 := G.Must(G.Div(form1, form3)) + form6 := G.Must(G.Div(form2, form4)) + form7 := G.Must(G.Add(form5, form6)) + form8 := G.Must(G.Sub(G.NewConstant(1.0), form7)) - // inisiasi nilai variabel x dan y - gorgonia.Let(x, 1.0) - gorgonia.Let(y, 3.0) + machine := G.NewTapeMachine(g) + defer machine.Close() + + G.Let(a, 2.0) + G.Let(b, 4.0) + G.Let(x, 1.0) + G.Let(y, 3.0) - // jalankan perhitungan if err := machine.RunAll(); err != nil { - fmt.Println(err) + fmt.Print(err) } - // tampilkan hasil fmt.Printf("Hasilnya : %v", form8.Value().Data()) + } From a8ef4eaab1af4f05e95193fd52a1bd967188d029 Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Wed, 21 Jun 2023 09:48:33 +0700 Subject: [PATCH 5/9] tugas Chapter 01 --- Chapter01/RPL/714222073/go.mod | 7 ++++--- Chapter01/RPL/714222073/go.sum | 14 ++++++++++++-- Chapter01/RPL/714222073/main.go | 5 ++--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Chapter01/RPL/714222073/go.mod b/Chapter01/RPL/714222073/go.mod index 65a27bce..03314ff8 100644 --- a/Chapter01/RPL/714222073/go.mod +++ b/Chapter01/RPL/714222073/go.mod @@ -1,7 +1,9 @@ -module github.com/DiniLubis/ai +module github.com/DiniLubis/ai/tree/master/Chapter01/RPL/714222073 go 1.20 +require gorgonia.org/gorgonia v0.9.17 + require ( github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db // indirect github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca // indirect @@ -13,13 +15,12 @@ require ( github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/xtgo/set v1.0.0 // indirect - go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gonum.org/v1/gonum v0.8.2 // indirect google.golang.org/protobuf v1.25.0 // indirect gorgonia.org/cu v0.9.3 // indirect gorgonia.org/dawson v1.2.0 // indirect - gorgonia.org/gorgonia v0.9.17 // indirect gorgonia.org/tensor v0.9.17 // indirect gorgonia.org/vecf32 v0.9.0 // indirect gorgonia.org/vecf64 v0.9.0 // indirect diff --git a/Chapter01/RPL/714222073/go.sum b/Chapter01/RPL/714222073/go.sum index c8fde53a..7d983a9a 100644 --- a/Chapter01/RPL/714222073/go.sum +++ b/Chapter01/RPL/714222073/go.sum @@ -22,6 +22,7 @@ github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhW github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= github.com/cznic/xc v0.0.0-20181122101856-45b06973881e/go.mod h1:3oFoiOvCDBYH+swwf5+k/woVmWy7h1Fcyu8Qig/jjX0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -57,6 +58,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gorgonia/bindgen v0.0.0-20180812032444-09626750019e/go.mod h1:YzKk63P9jQHkwAo2rXHBv02yPxDzoQT2cBV0x5bGV/8= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -74,6 +76,7 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -82,19 +85,19 @@ github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/xtgo/set v1.0.0 h1:6BCNBRv3ORNDQ7fyoJXRv+tstJz3m1JVFQErfeZz2pY= github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 h1:WJhcL4p+YeDxmZWg141nRm7XC8IDmhz7lk5GpadO1Sg= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -108,6 +111,7 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -121,8 +125,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -145,6 +151,7 @@ gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20190221094214-0632e2ebbd2d/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658 h1:/DNJ3wcvPHjTLVNG6rmSHK7uEwdBihyiJRJXB16wXoU= gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658/go.mod h1:zQa7n16lh3Z6FbSTYgjG+KNhz1bA/b9t3plFEaGMp+A= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -153,11 +160,13 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200910201057-6591123024b3/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -174,6 +183,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorgonia.org/cu v0.9.0-beta/go.mod h1:RPEPIfaxxqUmeRe7T1T8a0NER+KxBI2McoLEXhP1Vd8= gorgonia.org/cu v0.9.3 h1:IkxE4NWXuZHqr8AnmgoB8WNQPZeD6u0EJNxYjDC0YgY= diff --git a/Chapter01/RPL/714222073/main.go b/Chapter01/RPL/714222073/main.go index f76e5101..da2f567d 100644 --- a/Chapter01/RPL/714222073/main.go +++ b/Chapter01/RPL/714222073/main.go @@ -3,15 +3,14 @@ package main import ( "fmt" - "gorgonia.org/gorgonia" G "gorgonia.org/gorgonia" ) func main() { g := G.NewGraph() - a := gorgonia.NewScalar(g, G.Float64, G.WithName("a")) - b := gorgonia.NewScalar(g, G.Float64, G.WithName("b")) + a := G.NewScalar(g, G.Float64, G.WithName("a")) + b := G.NewScalar(g, G.Float64, G.WithName("b")) x := G.NewScalar(g, G.Float64, G.WithName("x")) y := G.NewScalar(g, G.Float64, G.WithName("y")) From d60a79f7e10dc4d3219c92737fe6626a0590c61d Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Wed, 21 Jun 2023 09:51:20 +0700 Subject: [PATCH 6/9] --- Chapter01/RPL/714222073/GreatLearning.jpg | Bin 46893 -> 0 bytes Chapter01/RPL/714222073/go.mod | 27 --- Chapter01/RPL/714222073/go.sum | 213 ---------------------- Chapter01/RPL/714222073/main.go | 41 ----- Chapter01/RPL/714222073/readme.md | 6 - 5 files changed, 287 deletions(-) delete mode 100644 Chapter01/RPL/714222073/GreatLearning.jpg delete mode 100644 Chapter01/RPL/714222073/go.mod delete mode 100644 Chapter01/RPL/714222073/go.sum delete mode 100644 Chapter01/RPL/714222073/main.go delete mode 100644 Chapter01/RPL/714222073/readme.md diff --git a/Chapter01/RPL/714222073/GreatLearning.jpg b/Chapter01/RPL/714222073/GreatLearning.jpg deleted file mode 100644 index f84294f5a554705d3103fcc0d15d7944d3c69d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46893 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 diff --git a/Chapter01/RPL/714222073/go.mod b/Chapter01/RPL/714222073/go.mod deleted file mode 100644 index 03314ff8..00000000 --- a/Chapter01/RPL/714222073/go.mod +++ /dev/null @@ -1,27 +0,0 @@ -module github.com/DiniLubis/ai/tree/master/Chapter01/RPL/714222073 - -go 1.20 - -require gorgonia.org/gorgonia v0.9.17 - -require ( - github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db // indirect - github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca // indirect - github.com/chewxy/hm v1.0.0 // indirect - github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 // indirect - github.com/gogo/protobuf v1.3.1 // indirect - github.com/golang/protobuf v1.4.3 // indirect - github.com/google/flatbuffers v1.12.0 // indirect - github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/xtgo/set v1.0.0 // indirect - go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - gonum.org/v1/gonum v0.8.2 // indirect - google.golang.org/protobuf v1.25.0 // indirect - gorgonia.org/cu v0.9.3 // indirect - gorgonia.org/dawson v1.2.0 // indirect - gorgonia.org/tensor v0.9.17 // indirect - gorgonia.org/vecf32 v0.9.0 // indirect - gorgonia.org/vecf64 v0.9.0 // indirect -) diff --git a/Chapter01/RPL/714222073/go.sum b/Chapter01/RPL/714222073/go.sum deleted file mode 100644 index 7d983a9a..00000000 --- a/Chapter01/RPL/714222073/go.sum +++ /dev/null @@ -1,213 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/apache/arrow/go/arrow v0.0.0-20201229220542-30ce2eb5d4dc/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= -github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db h1:x5taMU/KYJ8djMqp6eLMHQdcf6RZ+19lmAH7XTK6tmo= -github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= -github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca h1:xwIXr1FpA2XBoohlpvgb11No/zbsh5Clm/98PWPcHVA= -github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/chewxy/hm v1.0.0 h1:zy/TSv3LV2nD3dwUEQL2VhXeoXbb9QkpmdRAVUFiA6k= -github.com/chewxy/hm v1.0.0/go.mod h1:qg9YI4q6Fkj/whwHR1D+bOGeF7SniIP40VweVepLjg0= -github.com/chewxy/math32 v1.0.0/go.mod h1:Miac6hA1ohdDUTagnvJy/q+aNnEk16qWUdb8ZVhvCN0= -github.com/chewxy/math32 v1.0.6/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= -github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 h1:tYETMGvGcSl1GOLy7hjtvueM/Ax1rn9hpeD3fgbNdT0= -github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cfssl v0.0.0-20190808011637-b1ec8c586c2a/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cznic/cc v0.0.0-20181122101902-d673e9b70d4d/go.mod h1:m3fD/V+XTB35Kh9zw6dzjMY+We0Q7PMf6LLIC4vuG9k= -github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= -github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= -github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= -github.com/cznic/xc v0.0.0-20181122101856-45b06973881e/go.mod h1:3oFoiOvCDBYH+swwf5+k/woVmWy7h1Fcyu8Qig/jjX0= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= -github.com/google/flatbuffers v1.10.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= -github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/gorgonia/bindgen v0.0.0-20180812032444-09626750019e/go.mod h1:YzKk63P9jQHkwAo2rXHBv02yPxDzoQT2cBV0x5bGV/8= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 h1:O75p5GUdUfhJqNCMM1ntthjtJCOHVa1lzMSfh5Qsa0Y= -github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/xtgo/set v1.0.0 h1:6BCNBRv3ORNDQ7fyoJXRv+tstJz3m1JVFQErfeZz2pY= -github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190226215855-775f8194d0f9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190226202314-149afe6ec0b6/go.mod h1:jevfED4GnIEnJrWW55YmY9DMhajHcnkqVnEXmEtMyNI= -gonum.org/v1/gonum v0.0.0-20190902003836-43865b531bee/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/gonum v0.8.1-0.20200930085651-eea0b5cb5cc9/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/netlib v0.0.0-20190221094214-0632e2ebbd2d/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658 h1:/DNJ3wcvPHjTLVNG6rmSHK7uEwdBihyiJRJXB16wXoU= -gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658/go.mod h1:zQa7n16lh3Z6FbSTYgjG+KNhz1bA/b9t3plFEaGMp+A= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= -google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200910201057-6591123024b3/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorgonia.org/cu v0.9.0-beta/go.mod h1:RPEPIfaxxqUmeRe7T1T8a0NER+KxBI2McoLEXhP1Vd8= -gorgonia.org/cu v0.9.3 h1:IkxE4NWXuZHqr8AnmgoB8WNQPZeD6u0EJNxYjDC0YgY= -gorgonia.org/cu v0.9.3/go.mod h1:LgyAYDkN7HWhh8orGnCY2R8pP9PYbO44ivEbLMatkVU= -gorgonia.org/dawson v1.1.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= -gorgonia.org/dawson v1.2.0 h1:hJ/aofhfkReSnJdSMDzypRZ/oWDL1TmeYOauBnXKdFw= -gorgonia.org/dawson v1.2.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= -gorgonia.org/gorgonia v0.9.2/go.mod h1:ZtOb9f/wM2OMta1ISGspQ4roGDgz9d9dKOaPNvGR+ec= -gorgonia.org/gorgonia v0.9.17 h1:CJOQfgQA5fYd24vPiKKf6v98fRk71s1P7d2GjXNRjVE= -gorgonia.org/gorgonia v0.9.17/go.mod h1:g66b5Z6ATUdhVqYl2ZAAwblv5hnGW08vNinGLcnrceI= -gorgonia.org/tensor v0.9.0-beta/go.mod h1:05Y4laKuVlj4qFoZIZW1q/9n1jZkgDBOLmKXZdBLG1w= -gorgonia.org/tensor v0.9.17 h1:unwQMCzKTdS1tZwYr5M0AtIPVISWm97CecKBBB7bcZI= -gorgonia.org/tensor v0.9.17/go.mod h1:75SMdLLhZ+2oB0/EE8lFEIt1Caoykdd4bz1mAe59deg= -gorgonia.org/vecf32 v0.7.0/go.mod h1:iHG+kvTMqGYA0SgahfO2k62WRnxmHsqAREGbayRDzy8= -gorgonia.org/vecf32 v0.9.0 h1:PClazic1r+JVJ1dEzRXgeiVl4g1/Hf/w+wUSqnco1Xg= -gorgonia.org/vecf32 v0.9.0/go.mod h1:NCc+5D2oxddRL11hd+pCB1PEyXWOyiQxfZ/1wwhOXCA= -gorgonia.org/vecf64 v0.7.0/go.mod h1:1y4pmcSd+wh3phG+InwWQjYrqwyrtN9h27WLFVQfV1Q= -gorgonia.org/vecf64 v0.9.0 h1:bgZDP5x0OzBF64PjMGC3EvTdOoMEcmfAh1VCUnZFm1A= -gorgonia.org/vecf64 v0.9.0/go.mod h1:hp7IOWCnRiVQKON73kkC/AUMtEXyf9kGlVrtPQ9ccVA= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/Chapter01/RPL/714222073/main.go b/Chapter01/RPL/714222073/main.go deleted file mode 100644 index da2f567d..00000000 --- a/Chapter01/RPL/714222073/main.go +++ /dev/null @@ -1,41 +0,0 @@ -package main - -import ( - "fmt" - - G "gorgonia.org/gorgonia" -) - -func main() { - g := G.NewGraph() - - a := G.NewScalar(g, G.Float64, G.WithName("a")) - b := G.NewScalar(g, G.Float64, G.WithName("b")) - - x := G.NewScalar(g, G.Float64, G.WithName("x")) - y := G.NewScalar(g, G.Float64, G.WithName("y")) - - form1 := G.Must(G.Pow(x, G.NewConstant(2.0))) - form2 := G.Must(G.Pow(y, G.NewConstant(2.0))) - form3 := G.Must(G.Pow(a, G.NewConstant(2.0))) - form4 := G.Must(G.Pow(b, G.NewConstant(2.0))) - form5 := G.Must(G.Div(form1, form3)) - form6 := G.Must(G.Div(form2, form4)) - form7 := G.Must(G.Add(form5, form6)) - form8 := G.Must(G.Sub(G.NewConstant(1.0), form7)) - - machine := G.NewTapeMachine(g) - defer machine.Close() - - G.Let(a, 2.0) - G.Let(b, 4.0) - G.Let(x, 1.0) - G.Let(y, 3.0) - - if err := machine.RunAll(); err != nil { - fmt.Print(err) - } - - fmt.Printf("Hasilnya : %v", form8.Value().Data()) - -} diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md deleted file mode 100644 index ad70f65b..00000000 --- a/Chapter01/RPL/714222073/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -Tugas Chapter01 - -Membuat kode program persamaan elips = (x/a)^2 + (y/b)^2 = 1 - -Screenshoot hasil running : -![hasil running](https://github.com/DiniLubis/ai/assets/119611222/6c295f9f-e89b-4801-ba21-0983bcc67899) From a8ebe853b31798a5203fa9b9012c3c8644a55032 Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Wed, 21 Jun 2023 10:19:24 +0700 Subject: [PATCH 7/9] tugas Chapter 01 --- Chapter01/RPL/714222073/GreatLearning.jpg | Bin 0 -> 46893 bytes Chapter01/RPL/714222073/go.mod | 27 +++ Chapter01/RPL/714222073/go.sum | 213 ++++++++++++++++++++++ Chapter01/RPL/714222073/persamaanelips.go | 49 +++++ Chapter01/RPL/714222073/readme.md | 6 + 5 files changed, 295 insertions(+) create mode 100644 Chapter01/RPL/714222073/GreatLearning.jpg create mode 100644 Chapter01/RPL/714222073/go.mod create mode 100644 Chapter01/RPL/714222073/go.sum create mode 100644 Chapter01/RPL/714222073/persamaanelips.go create mode 100644 Chapter01/RPL/714222073/readme.md diff --git a/Chapter01/RPL/714222073/GreatLearning.jpg b/Chapter01/RPL/714222073/GreatLearning.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f84294f5a554705d3103fcc0d15d7944d3c69d67 GIT binary patch literal 46893 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 literal 0 HcmV?d00001 diff --git a/Chapter01/RPL/714222073/go.mod b/Chapter01/RPL/714222073/go.mod new file mode 100644 index 00000000..ad306e5e --- /dev/null +++ b/Chapter01/RPL/714222073/go.mod @@ -0,0 +1,27 @@ +module github.com/dinilubis/ai/Chapter01/RPL/714222073 + +go 1.20 + +require gorgonia.org/gorgonia v0.9.17 + +require ( + github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db // indirect + github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca // indirect + github.com/chewxy/hm v1.0.0 // indirect + github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 // indirect + github.com/gogo/protobuf v1.3.1 // indirect + github.com/golang/protobuf v1.4.3 // indirect + github.com/google/flatbuffers v1.12.0 // indirect + github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/xtgo/set v1.0.0 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gonum.org/v1/gonum v0.8.2 // indirect + google.golang.org/protobuf v1.25.0 // indirect + gorgonia.org/cu v0.9.3 // indirect + gorgonia.org/dawson v1.2.0 // indirect + gorgonia.org/tensor v0.9.17 // indirect + gorgonia.org/vecf32 v0.9.0 // indirect + gorgonia.org/vecf64 v0.9.0 // indirect +) diff --git a/Chapter01/RPL/714222073/go.sum b/Chapter01/RPL/714222073/go.sum new file mode 100644 index 00000000..7d983a9a --- /dev/null +++ b/Chapter01/RPL/714222073/go.sum @@ -0,0 +1,213 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/apache/arrow/go/arrow v0.0.0-20201229220542-30ce2eb5d4dc/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db h1:x5taMU/KYJ8djMqp6eLMHQdcf6RZ+19lmAH7XTK6tmo= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca h1:xwIXr1FpA2XBoohlpvgb11No/zbsh5Clm/98PWPcHVA= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chewxy/hm v1.0.0 h1:zy/TSv3LV2nD3dwUEQL2VhXeoXbb9QkpmdRAVUFiA6k= +github.com/chewxy/hm v1.0.0/go.mod h1:qg9YI4q6Fkj/whwHR1D+bOGeF7SniIP40VweVepLjg0= +github.com/chewxy/math32 v1.0.0/go.mod h1:Miac6hA1ohdDUTagnvJy/q+aNnEk16qWUdb8ZVhvCN0= +github.com/chewxy/math32 v1.0.6/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9 h1:tYETMGvGcSl1GOLy7hjtvueM/Ax1rn9hpeD3fgbNdT0= +github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20190808011637-b1ec8c586c2a/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cznic/cc v0.0.0-20181122101902-d673e9b70d4d/go.mod h1:m3fD/V+XTB35Kh9zw6dzjMY+We0Q7PMf6LLIC4vuG9k= +github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= +github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= +github.com/cznic/xc v0.0.0-20181122101856-45b06973881e/go.mod h1:3oFoiOvCDBYH+swwf5+k/woVmWy7h1Fcyu8Qig/jjX0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/google/flatbuffers v1.10.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= +github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/gorgonia/bindgen v0.0.0-20180812032444-09626750019e/go.mod h1:YzKk63P9jQHkwAo2rXHBv02yPxDzoQT2cBV0x5bGV/8= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 h1:O75p5GUdUfhJqNCMM1ntthjtJCOHVa1lzMSfh5Qsa0Y= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xtgo/set v1.0.0 h1:6BCNBRv3ORNDQ7fyoJXRv+tstJz3m1JVFQErfeZz2pY= +github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190226215855-775f8194d0f9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20190226202314-149afe6ec0b6/go.mod h1:jevfED4GnIEnJrWW55YmY9DMhajHcnkqVnEXmEtMyNI= +gonum.org/v1/gonum v0.0.0-20190902003836-43865b531bee/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.8.1-0.20200930085651-eea0b5cb5cc9/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/netlib v0.0.0-20190221094214-0632e2ebbd2d/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658 h1:/DNJ3wcvPHjTLVNG6rmSHK7uEwdBihyiJRJXB16wXoU= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658/go.mod h1:zQa7n16lh3Z6FbSTYgjG+KNhz1bA/b9t3plFEaGMp+A= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200910201057-6591123024b3/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorgonia.org/cu v0.9.0-beta/go.mod h1:RPEPIfaxxqUmeRe7T1T8a0NER+KxBI2McoLEXhP1Vd8= +gorgonia.org/cu v0.9.3 h1:IkxE4NWXuZHqr8AnmgoB8WNQPZeD6u0EJNxYjDC0YgY= +gorgonia.org/cu v0.9.3/go.mod h1:LgyAYDkN7HWhh8orGnCY2R8pP9PYbO44ivEbLMatkVU= +gorgonia.org/dawson v1.1.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/dawson v1.2.0 h1:hJ/aofhfkReSnJdSMDzypRZ/oWDL1TmeYOauBnXKdFw= +gorgonia.org/dawson v1.2.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/gorgonia v0.9.2/go.mod h1:ZtOb9f/wM2OMta1ISGspQ4roGDgz9d9dKOaPNvGR+ec= +gorgonia.org/gorgonia v0.9.17 h1:CJOQfgQA5fYd24vPiKKf6v98fRk71s1P7d2GjXNRjVE= +gorgonia.org/gorgonia v0.9.17/go.mod h1:g66b5Z6ATUdhVqYl2ZAAwblv5hnGW08vNinGLcnrceI= +gorgonia.org/tensor v0.9.0-beta/go.mod h1:05Y4laKuVlj4qFoZIZW1q/9n1jZkgDBOLmKXZdBLG1w= +gorgonia.org/tensor v0.9.17 h1:unwQMCzKTdS1tZwYr5M0AtIPVISWm97CecKBBB7bcZI= +gorgonia.org/tensor v0.9.17/go.mod h1:75SMdLLhZ+2oB0/EE8lFEIt1Caoykdd4bz1mAe59deg= +gorgonia.org/vecf32 v0.7.0/go.mod h1:iHG+kvTMqGYA0SgahfO2k62WRnxmHsqAREGbayRDzy8= +gorgonia.org/vecf32 v0.9.0 h1:PClazic1r+JVJ1dEzRXgeiVl4g1/Hf/w+wUSqnco1Xg= +gorgonia.org/vecf32 v0.9.0/go.mod h1:NCc+5D2oxddRL11hd+pCB1PEyXWOyiQxfZ/1wwhOXCA= +gorgonia.org/vecf64 v0.7.0/go.mod h1:1y4pmcSd+wh3phG+InwWQjYrqwyrtN9h27WLFVQfV1Q= +gorgonia.org/vecf64 v0.9.0 h1:bgZDP5x0OzBF64PjMGC3EvTdOoMEcmfAh1VCUnZFm1A= +gorgonia.org/vecf64 v0.9.0/go.mod h1:hp7IOWCnRiVQKON73kkC/AUMtEXyf9kGlVrtPQ9ccVA= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/Chapter01/RPL/714222073/persamaanelips.go b/Chapter01/RPL/714222073/persamaanelips.go new file mode 100644 index 00000000..f39acc50 --- /dev/null +++ b/Chapter01/RPL/714222073/persamaanelips.go @@ -0,0 +1,49 @@ +package main + +import ( + "fmt" + + G "gorgonia.org/gorgonia" +) + +func main() { + g := G.NewGraph() + + // defenisikan konstanta a dan b + a := G.NewScalar(g, G.Float64, G.WithName("a")) + b := G.NewScalar(g, G.Float64, G.WithName("b")) + + // defenisikan variable x dan y + x := G.NewScalar(g, G.Float64, G.WithName("x")) + y := G.NewScalar(g, G.Float64, G.WithName("y")) + + // formula persamaan elips (x/a)^2 + (y/b)^2 - 1 + formula1 := G.Must(G.Pow(x, G.NewConstant(2.0))) + formula2 := G.Must(G.Pow(y, G.NewConstant(2.0))) + formula3 := G.Must(G.Pow(a, G.NewConstant(2.0))) + formula4 := G.Must(G.Pow(b, G.NewConstant(2.0))) + formula5 := G.Must(G.Div(formula1, formula3)) + formula6 := G.Must(G.Div(formula2, formula4)) + formula7 := G.Must(G.Add(formula5, formula6)) + formula8 := G.Must(G.Sub(G.NewConstant(1.0), formula7)) + + machine := G.NewTapeMachine(g) + defer machine.Close() + + // inisiasi nilai konstanta a dan b + G.Let(a, 2.0) + G.Let(b, 4.0) + + // inisiasi nilai variabel x dan y + G.Let(x, 1.0) + G.Let(y, 3.0) + + // menjalankan model fungsi + if err := machine.RunAll(); err != nil { + fmt.Print(err) + } + + // cetak hasil + fmt.Printf("Hasilnya : %v", formula8.Value().Data()) + +} diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md new file mode 100644 index 00000000..ad70f65b --- /dev/null +++ b/Chapter01/RPL/714222073/readme.md @@ -0,0 +1,6 @@ +Tugas Chapter01 + +Membuat kode program persamaan elips = (x/a)^2 + (y/b)^2 = 1 + +Screenshoot hasil running : +![hasil running](https://github.com/DiniLubis/ai/assets/119611222/6c295f9f-e89b-4801-ba21-0983bcc67899) From 95dbea0ffb45247b807ba181aa27e2a46e9f4f42 Mon Sep 17 00:00:00 2001 From: DiniLubis <119611222+DiniLubis@users.noreply.github.com> Date: Wed, 21 Jun 2023 10:20:35 +0700 Subject: [PATCH 8/9] Update readme.md --- Chapter01/RPL/714222073/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Chapter01/RPL/714222073/readme.md b/Chapter01/RPL/714222073/readme.md index ad70f65b..22144beb 100644 --- a/Chapter01/RPL/714222073/readme.md +++ b/Chapter01/RPL/714222073/readme.md @@ -3,4 +3,5 @@ Tugas Chapter01 Membuat kode program persamaan elips = (x/a)^2 + (y/b)^2 = 1 Screenshoot hasil running : -![hasil running](https://github.com/DiniLubis/ai/assets/119611222/6c295f9f-e89b-4801-ba21-0983bcc67899) + +![hasil running](https://github.com/DiniLubis/ai/assets/119611222/ee38814a-543a-4e46-9ace-928654c5f09f) From db678e8b104b71e606623aff07625c525f9293b8 Mon Sep 17 00:00:00 2001 From: Dini Lubis <0606ayl@gmail.com> Date: Fri, 11 Aug 2023 16:47:40 +0700 Subject: [PATCH 9/9] --- Chapter02/RPL/714222073/go.mod | 29 ++++ Chapter02/RPL/714222073/go.sum | 234 ++++++++++++++++++++++++++++++++ Chapter02/RPL/714222073/main.go | 207 ++++++++++++++++++++++++++++ 3 files changed, 470 insertions(+) create mode 100644 Chapter02/RPL/714222073/go.mod create mode 100644 Chapter02/RPL/714222073/go.sum create mode 100644 Chapter02/RPL/714222073/main.go diff --git a/Chapter02/RPL/714222073/go.mod b/Chapter02/RPL/714222073/go.mod new file mode 100644 index 00000000..2a069019 --- /dev/null +++ b/Chapter02/RPL/714222073/go.mod @@ -0,0 +1,29 @@ +module 714222073 + +go 1.20 + +require ( + gorgonia.org/gorgonia v0.9.17 + gorgonia.org/tensor v0.9.24 +) + +require ( + github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db // indirect + github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca // indirect + github.com/chewxy/hm v1.0.0 // indirect + github.com/chewxy/math32 v1.0.8 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.4.3 // indirect + github.com/google/flatbuffers v1.12.0 // indirect + github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/xtgo/set v1.0.0 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gonum.org/v1/gonum v0.8.2 // indirect + google.golang.org/protobuf v1.25.0 // indirect + gorgonia.org/cu v0.9.3 // indirect + gorgonia.org/dawson v1.2.0 // indirect + gorgonia.org/vecf32 v0.9.0 // indirect + gorgonia.org/vecf64 v0.9.0 // indirect +) diff --git a/Chapter02/RPL/714222073/go.sum b/Chapter02/RPL/714222073/go.sum new file mode 100644 index 00000000..a0b0646f --- /dev/null +++ b/Chapter02/RPL/714222073/go.sum @@ -0,0 +1,234 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/apache/arrow/go/arrow v0.0.0-20201229220542-30ce2eb5d4dc/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db h1:x5taMU/KYJ8djMqp6eLMHQdcf6RZ+19lmAH7XTK6tmo= +github.com/apache/arrow/go/arrow v0.0.0-20210105145422-88aaea5262db/go.mod h1:c9sxoIT3YgLxH4UhLOCKaBlEojuMhVYpk4Ntv3opUTQ= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca h1:xwIXr1FpA2XBoohlpvgb11No/zbsh5Clm/98PWPcHVA= +github.com/awalterschulze/gographviz v0.0.0-20190221210632-1e9ccb565bca/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chewxy/hm v1.0.0 h1:zy/TSv3LV2nD3dwUEQL2VhXeoXbb9QkpmdRAVUFiA6k= +github.com/chewxy/hm v1.0.0/go.mod h1:qg9YI4q6Fkj/whwHR1D+bOGeF7SniIP40VweVepLjg0= +github.com/chewxy/math32 v1.0.0/go.mod h1:Miac6hA1ohdDUTagnvJy/q+aNnEk16qWUdb8ZVhvCN0= +github.com/chewxy/math32 v1.0.6/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/chewxy/math32 v1.0.7-0.20210223031236-a3549c8cb6a9/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/chewxy/math32 v1.0.8 h1:fU5E4Ec4Z+5RtRAi3TovSxUjQPkgRh+HbP7tKB2OFbM= +github.com/chewxy/math32 v1.0.8/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20190808011637-b1ec8c586c2a/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cznic/cc v0.0.0-20181122101902-d673e9b70d4d/go.mod h1:m3fD/V+XTB35Kh9zw6dzjMY+We0Q7PMf6LLIC4vuG9k= +github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= +github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= +github.com/cznic/xc v0.0.0-20181122101856-45b06973881e/go.mod h1:3oFoiOvCDBYH+swwf5+k/woVmWy7h1Fcyu8Qig/jjX0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/google/flatbuffers v1.10.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= +github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/gorgonia/bindgen v0.0.0-20180812032444-09626750019e/go.mod h1:YzKk63P9jQHkwAo2rXHBv02yPxDzoQT2cBV0x5bGV/8= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21 h1:O75p5GUdUfhJqNCMM1ntthjtJCOHVa1lzMSfh5Qsa0Y= +github.com/leesper/go_rng v0.0.0-20171009123644-5344a9259b21/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xtgo/set v1.0.0 h1:6BCNBRv3ORNDQ7fyoJXRv+tstJz3m1JVFQErfeZz2pY= +github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 h1:FyBZqvoA/jbNzuAWLQE2kG820zMAkcilx6BMjGbL/E4= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190226215855-775f8194d0f9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20190226202314-149afe6ec0b6/go.mod h1:jevfED4GnIEnJrWW55YmY9DMhajHcnkqVnEXmEtMyNI= +gonum.org/v1/gonum v0.0.0-20190902003836-43865b531bee/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.8.1-0.20200930085651-eea0b5cb5cc9/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/netlib v0.0.0-20190221094214-0632e2ebbd2d/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658 h1:/DNJ3wcvPHjTLVNG6rmSHK7uEwdBihyiJRJXB16wXoU= +gonum.org/v1/netlib v0.0.0-20201012070519-2390d26c3658/go.mod h1:zQa7n16lh3Z6FbSTYgjG+KNhz1bA/b9t3plFEaGMp+A= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200910201057-6591123024b3/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorgonia.org/cu v0.9.0-beta/go.mod h1:RPEPIfaxxqUmeRe7T1T8a0NER+KxBI2McoLEXhP1Vd8= +gorgonia.org/cu v0.9.3 h1:IkxE4NWXuZHqr8AnmgoB8WNQPZeD6u0EJNxYjDC0YgY= +gorgonia.org/cu v0.9.3/go.mod h1:LgyAYDkN7HWhh8orGnCY2R8pP9PYbO44ivEbLMatkVU= +gorgonia.org/dawson v1.1.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/dawson v1.2.0 h1:hJ/aofhfkReSnJdSMDzypRZ/oWDL1TmeYOauBnXKdFw= +gorgonia.org/dawson v1.2.0/go.mod h1:Px1mcziba8YUBIDsbzGwbKJ11uIblv/zkln4jNrZ9Ws= +gorgonia.org/gorgonia v0.9.2/go.mod h1:ZtOb9f/wM2OMta1ISGspQ4roGDgz9d9dKOaPNvGR+ec= +gorgonia.org/gorgonia v0.9.17 h1:CJOQfgQA5fYd24vPiKKf6v98fRk71s1P7d2GjXNRjVE= +gorgonia.org/gorgonia v0.9.17/go.mod h1:g66b5Z6ATUdhVqYl2ZAAwblv5hnGW08vNinGLcnrceI= +gorgonia.org/tensor v0.9.0-beta/go.mod h1:05Y4laKuVlj4qFoZIZW1q/9n1jZkgDBOLmKXZdBLG1w= +gorgonia.org/tensor v0.9.17/go.mod h1:75SMdLLhZ+2oB0/EE8lFEIt1Caoykdd4bz1mAe59deg= +gorgonia.org/tensor v0.9.24 h1:8ahrfwO4iby+1ILObIqfjJa+wyA2RoCfJSS3LVERSRE= +gorgonia.org/tensor v0.9.24/go.mod h1:1dsOegMm2n1obs69YnVJdp2oPSKx9Q9Tco5i7GEaXRg= +gorgonia.org/vecf32 v0.7.0/go.mod h1:iHG+kvTMqGYA0SgahfO2k62WRnxmHsqAREGbayRDzy8= +gorgonia.org/vecf32 v0.9.0 h1:PClazic1r+JVJ1dEzRXgeiVl4g1/Hf/w+wUSqnco1Xg= +gorgonia.org/vecf32 v0.9.0/go.mod h1:NCc+5D2oxddRL11hd+pCB1PEyXWOyiQxfZ/1wwhOXCA= +gorgonia.org/vecf64 v0.7.0/go.mod h1:1y4pmcSd+wh3phG+InwWQjYrqwyrtN9h27WLFVQfV1Q= +gorgonia.org/vecf64 v0.9.0 h1:bgZDP5x0OzBF64PjMGC3EvTdOoMEcmfAh1VCUnZFm1A= +gorgonia.org/vecf64 v0.9.0/go.mod h1:hp7IOWCnRiVQKON73kkC/AUMtEXyf9kGlVrtPQ9ccVA= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/Chapter02/RPL/714222073/main.go b/Chapter02/RPL/714222073/main.go new file mode 100644 index 00000000..463528ae --- /dev/null +++ b/Chapter02/RPL/714222073/main.go @@ -0,0 +1,207 @@ +package main + +import ( + "fmt" + "log" + "math/rand" + + . "gorgonia.org/gorgonia" + "gorgonia.org/tensor" +) + +var err error + +type nn struct { + g *ExprGraph + w0, w1, w2, w3, w4, w5, w6, w7, w8 *Node + + pred *Node + predVal Value +} + +func newNN(g *ExprGraph) *nn { + // Create node for w/weight + wB := tensor.Random(tensor.Float64, 3) + wB1 := tensor.Random(tensor.Float64, 3) + wB2 := tensor.Random(tensor.Float64, 3) + wB3 := tensor.Random(tensor.Float64, 3) + wB4 := tensor.Random(tensor.Float64, 3) + wB5 := tensor.Random(tensor.Float64, 3) + wB6 := tensor.Random(tensor.Float64, 3) + wB7 := tensor.Random(tensor.Float64, 3) + wB8 := tensor.Random(tensor.Float64, 3) + + wT := tensor.New(tensor.WithBacking(wB), tensor.WithShape(3, 1)) + wT1 := tensor.New(tensor.WithBacking(wB1), tensor.WithShape(1, 3)) + wT2 := tensor.New(tensor.WithBacking(wB2), tensor.WithShape(3, 1)) + wT3 := tensor.New(tensor.WithBacking(wB3), tensor.WithShape(1, 3)) + wT4 := tensor.New(tensor.WithBacking(wB4), tensor.WithShape(3, 1)) + wT5 := tensor.New(tensor.WithBacking(wB5), tensor.WithShape(1, 3)) + wT6 := tensor.New(tensor.WithBacking(wB6), tensor.WithShape(3, 1)) + wT7 := tensor.New(tensor.WithBacking(wB7), tensor.WithShape(1, 3)) + wT8 := tensor.New(tensor.WithBacking(wB8), tensor.WithShape(3, 1)) + + w0 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(3, 1), + WithValue(wT), + ) + w1 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(1, 3), + WithValue(wT1), + ) + w2 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(3, 1), + WithValue(wT2), + ) + w3 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(1, 3), + WithValue(wT3), + ) + w4 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(3, 1), + WithValue(wT4), + ) + w5 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(1, 3), + WithValue(wT5), + ) + w6 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(3, 1), + WithValue(wT6), + ) + w7 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(1, 3), + WithValue(wT7), + ) + w8 := NewMatrix(g, + tensor.Float64, + WithName("w"), + WithShape(3, 1), + WithValue(wT8), + ) + return &nn{ + g: g, + w0: w0, + w1: w1, + w2: w2, + w3: w3, + w4: w4, + w5: w5, + w6: w6, + w7: w7, + w8: w8, + } +} + +func (m *nn) learnables() Nodes { + return Nodes{m.w8} +} + +func (m *nn) fwd(x *Node) (err error) { + var l0, l1, l2, l3, l4, l5, l6, l7, l8 *Node + + // Set first layer to be copy of input + l0 = x + + // Dot product of l0 and w0, use as input for Sigmoid + l0dot := Must(Mul(l0, m.w0)) + + // Build hidden layer out of result + l1 = Must(Tanh(l0dot)) + l1dot := Must(Mul(l1, m.w1)) + l2 = Must(LeakyRelu(l1dot, 0.1)) + l2dot := Must(Mul(l2, m.w2)) + l3 = Must(Log1p(l2dot)) + l3dot := Must(Mul(l3, m.w3)) + l4 = Must(Sin(l3dot)) + l4dot := Must(Mul(l4, m.w4)) + l5 = Must(Cos(l4dot)) + l5dot := Must(Mul(l5, m.w5)) + l6 = Must(Exp(l5dot)) + l6dot := Must(Mul(l6, m.w6)) + l7 = Must(Cube(l6dot)) + l7dot := Must(Mul(l7, m.w7)) + l8 = Must(Sigmoid(l7dot)) + l8dot := Must(Mul(l8, m.w8)) + + m.pred = l8dot + Read(m.pred, &m.predVal) + return nil + +} + +func main() { + + rand.Seed(31117) + + // Create graph and network + g := NewGraph() + m := newNN(g) + + // Set input x to network + xB := []float64{0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1} + xT := tensor.New(tensor.WithBacking(xB), tensor.WithShape(4, 3)) + x := NewMatrix(g, + tensor.Float64, + WithName("X"), + WithShape(4, 3), + WithValue(xT), + ) + + // Define validation data set + yB := []float64{0, 0, 1, 1} + yT := tensor.New(tensor.WithBacking(yB), tensor.WithShape(4, 1)) + y := NewMatrix(g, + tensor.Float64, + WithName("y"), + WithShape(4, 1), + WithValue(yT), + ) + + // Run forward pass + if err := m.fwd(x); err != nil { + log.Fatalf("%+v", err) + } + + // Calculate Cost w/MSE + fmt.Println("Output before Training: \n", m.pred.Shape()) + losses := Must(Sub(y, m.pred)) + square := Must(Square(losses)) + cost := Must(Mean(square)) + + // Do Gradient updates + if _, err = Grad(cost, m.learnables()...); err != nil { + log.Fatal(err) + } + + // Instantiate VM and Solver + vm := NewTapeMachine(g, BindDualValues(m.learnables()...)) + solver := NewVanillaSolver(WithLearnRate(1.0)) + + for i := 0; i < 1000; i++ { + vm.Reset() + fmt.Printf("\nStep %d\n", i) + if err = vm.RunAll(); err != nil { + log.Fatalf("Failed at inter %d: %v", i, err) + } + solver.Step(NodesToValueGrads(m.learnables())) + vm.Reset() + } + fmt.Println("\n\nOutput after Training: \n", m.predVal) +}