Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Chapter01/C/1204063/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module github.com/ilmanaqilaa/ai/chapter01/B/1204055

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-20230221090011-e4bae7ad2296 // 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
)
214 changes: 214 additions & 0 deletions Chapter01/C/1204063/go.sum

Large diffs are not rendered by default.

51 changes: 51 additions & 0 deletions Chapter01/C/1204063/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package main

import (
"fmt"
"log"

"gorgonia.org/gorgonia"
)

func main() {
// Membuat sebuah graph baru
g := gorgonia.NewGraph()

// Membuat variabel x dan y sebagai input dari persamaan elips
x := gorgonia.NodeFromAny(g, 3.0, gorgonia.WithName("x"))
y := gorgonia.NodeFromAny(g, 2.0, gorgonia.WithName("y"))

// Membuat konstanta a dan b sebagai parameter elips
a := gorgonia.NodeFromAny(g, 2.0, gorgonia.WithName("a"))
b := gorgonia.NodeFromAny(g, 1.0, gorgonia.WithName("b"))

// Menghitung nilai persamaan elips
xOverA := gorgonia.Must(gorgonia.Div(x, a))
yOverB := gorgonia.Must(gorgonia.Div(y, b))
squareX := gorgonia.Must(gorgonia.Square(xOverA))
squareY := gorgonia.Must(gorgonia.Square(yOverB))
sumSquares := gorgonia.Must(gorgonia.Add(squareX, squareY))
result := gorgonia.Must(gorgonia.Sqrt(sumSquares))

// Membuat output dari graph
output := result

// Membuat sebuah solver untuk menyelesaikan graph
machine := gorgonia.NewTapeMachine(g)
defer machine.Close()

// Menyelesaikan graph dengan input x=3 dan y=2
err := machine.RunAll()
if err != nil {
log.Fatal(err)
}

// Mengambil nilai output dari graph
val := output.Value()
if val == nil {
log.Fatal("Failed to get value from graph")
}

// Menampilkan nilai persamaan elips
fmt.Println(val)
}
19 changes: 19 additions & 0 deletions Chapter01/C/1204063/program1.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package main
import (
"fmt"
// "log"
. "gorgonia.org/gorgonia"
)

func main() {
g := NewGraph()
a := NewScalar(g, Float64, WithName("a"))
b := NewScalar(g, Float64, WithName("b"))
c, _ := Add(a,b)
machine := NewTapeMachine(g)
Let(a, 50.0)
Let(b, 5.0)
machine.RunAll()
fmt.Printf("Nilai c = %s + %s", a.Value(), b.Value())
fmt.Printf("\nNilai c = %s", c.Value())
}
40 changes: 40 additions & 0 deletions Chapter01/C/1204063/program2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package main
import (
"fmt"
"io/ioutil"
. "gorgonia.org/gorgonia"
"gorgonia.org/tensor"
)

func main() {
g := NewGraph()
//deklarasi W, dengan bobot inisiasi matB
matB := []float64{0.9,0.7,0.4,0.2}
matT := tensor.New(tensor.WithBacking(matB), tensor.WithShape(2, 2))
mat := NewMatrix(g,
tensor.Float64,
WithName("W"),
WithShape(2, 2),
WithValue(matT),
)

// deklarasi x dengan inisiasi bobot vecB
vecB := []float64{5,7}

vecT := tensor.New(tensor.WithBacking(vecB), tensor.WithShape(2))

vec := NewVector(g,
tensor.Float64,
WithName("x"),
WithShape(2),
WithValue(vecT),
)

z, _ := Mul(mat, vec)
machine := NewTapeMachine(g)
machine.RunAll()
//melihat hasil output
fmt.Println(z.Value().Data())
ioutil.WriteFile("simple_graph.dot", []byte(g.ToDot()), 0644)
}

50 changes: 50 additions & 0 deletions Chapter01/C/1204063/program3.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package main

import (
"fmt"

G "gorgonia.org/gorgonia"
"gorgonia.org/tensor"
)

func main() {
g := G.NewGraph()

//deklarasi W, dengan bobot inisiasi matB
matB := []float64{0.9,0.7,0.4,0.2}
matT := tensor.New(tensor.WithBacking(matB), tensor.WithShape(2, 2))
mat := G.NewMatrix(g,
tensor.Float64,
G.WithName("W"),
G.WithShape(2, 2),
G.WithValue(matT),
)

// deklarasi x dengan inisiasi bobot vecB
vecB := []float64{5,7}

vecT := tensor.New(tensor.WithBacking(vecB), tensor.WithShape(2))

vec := G.NewVector(g,
tensor.Float64,
G.WithName("x"),
G.WithShape(2),
G.WithValue(vecT),
)

//tambah deklarasi b
b := G.NewScalar(g,
tensor.Float64,
G.WithName("b"),
G.WithValue(3.0),
)

a, _ := G.Mul(mat, vec)
z, _ := G.Add(a, b)

machine := G.NewTapeMachine(g)

machine.RunAll()
//melihat hasil output
fmt.Println(z.Value().Data())
}
9 changes: 9 additions & 0 deletions Chapter02/C/1204063/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Deskripsi Task Chapter 02

### Nama : Fahira
### NPM : 1204044

Pada tugas chapter 02 ini implementasi sebuah neural network menggunakan library Gorgonia untuk menyelesaikan masalah klasifikasi biner pada dataset dengan 4 input dan 1 output. Neural network tersebut terdiri dari 4 layer yang masing-masing terdiri dari beberapa neuron, dan menggunakan fungsi aktivasi sigmoid pada setiap layer. Proses training dilakukan dengan melakukan iterasi sebanyak 10000 kali, di mana pada setiap iterasi dilakukan perhitungan cost menggunakan mean squared error (MSE) dan dilakukan update pada gradient menggunakan algoritma Adam. Setelah proses training selesai, nilai prediksi dari model terhadap input yang diberikan dapat diperoleh dengan memanggil m.predVal.

## Hasil ketika di run :
![output_task](https://user-images.githubusercontent.com/80674110/230775499-7d9b0d2c-2bbf-45f5-a4c5-72b572315562.png)
29 changes: 29 additions & 0 deletions Chapter02/C/1204063/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module github.com/bukped/ai/Chapter02/B/1204044

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
)
Loading