MCPcopy Index your code
hub / github.com/Fontinalis/fonet

github.com/Fontinalis/fonet @v0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2 ↗ · + Follow
36 symbols 72 edges 6 files 13 documented · 36%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

fonet

Go Coverage Status Go Report Card Go Reference

fonet is a deep neural network package for Go. It's mainly created because I wanted to learn about neural networks and create my own package. I'm planning to continue the development of the package and add more function to it, for example exporting/importing a model.

Install

It's the same as everywhere, you just have to run the

go get github.com/Fontinalis/fonet

Usage

I focused (and still focusing) on creating an easy to use package, but let me know if something is not clear.

Creating a network

As in the xor example, it's not so complicated to create a network. When you creating the network, you always have to define the layers.

n := fonet.NewNetwork([]int{2, 3, 1}, fonet.Sigmond)
/*
2 nodes in the INPUT LAYER
3 nodes in the HIDDEN LAYER
1 node in the OUTPUT LAYER
*/

But my goal was also to create a package, which can create deep neural networks too, so here is another example for that.

n := fonet.NewNetwork([]int{6, 12, 8, 4}, fonet.Sigmond)
/*
6 nodes in the INPUT LAYER
12 nodes in the HIDDEN LAYER (1)
8 nodes in the HIDDEN LAYER (2)
4 nodes in the OUTPUT LAYER
*/

Train the network

After creating the network, you have to train your network. To do that, you have to specify your training set, which should be like the next

var trainingData = [][][]float64{
    [][]float64{ // The actual training sample
        []float64{
            /*
            The INPUT data
            */
        },
        []float64{
            /*
            The OUTPUT data
            */
        },
    },
}

After giving the training data, you can set the epoch and the learning rate.

n.Train(trainingData, epoch, lrate, true)
// Train(trainingData [][][]float64, epochs int, lrate float64, debug bool)

Note: When 'debug' is true, it'll show when and which epoch is finished

Predict the output

After training your network, using the Predict(..) function you can calculate the output for the given input.

In the case of XOR, it looks like the next

input := []float64{
    1,
    1,
}
out := n.Predict(input)

Core symbols most depended-on inside this repo

Predict
called by 7
network.go
NewNetwork
called by 5
network.go
Train
called by 3
network.go
sigmoid
called by 2
functions.go
a
called by 2
network.go
feedforward
called by 2
network.go
makeSamples
called by 2
examples/iris/main.go
String
called by 1
functions.go

Shape

Function 20
Method 11
Struct 3
TypeAlias 2

Languages

Go100%

Modules by API surface

network.go16 symbols
functions.go13 symbols
examples/iris/main.go3 symbols
network_test.go2 symbols
functions_test.go1 symbols
examples/xor/main.go1 symbols

For agents

$ claude mcp add fonet \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact