Giter Site home page Giter Site logo

go-neural's People

Contributors

mrclegal avatar nox73 avatar r0fls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-neural's Issues

learn.Evaluation() Least Squares Method

I was just checking out the least squares algorithm in the learn.Evaluation() method and I can't find the maths to back up the algorithm used. Would you be able to point me in the right direction?

Why isn't the Means Square Error being used here? Example:

func Evaluation(n *neural.Network, in, ideal []float64) float64 {
    out := n.Calculate(in)

    var e float64
    for i, _ := range out {
        e += math.Pow(out[i]-ideal[i], 2)
    }

    return e / float64(len(out))
}

RandomizeSynapses() not creating correct random weights

I'm not sure the randomization of the Weights on synapses is correct.

func (n *Network) RandomizeSynapses() {
    for _, l := range n.Layers {
        for _, n := range l.Neurons {
            for _, s := range n.InSynapses {
                s.Weight = 2 * (rand.Float64() - 0.5)
            }
        }
    }
}
  1. rand.Seed() should be used before generating a random Float.
  2. I'm not sure why the value is being multiplied by 2. It was my understanding that the initial weights should be a random value between -0.5 and 0.5 (Negevitsky, Michael.)[1]

[1] - Negnevitsky, Michael. 2011., Artificial Intelligence. [online]. Addison Wesley.

License of go-neural

Hola Alex.
I've forked your neural nets implementation and currently try to build rich training and evaluation function around it.
Would be very helpful if you could provide a license for the code. If you tend to use one of these 3 licenses we can work together on the code: MIT, Apache 2.0 and BSD3.

Thanks in advance! Best, Alex

Convulational Layers

Convolutional layers are important for things like image processing, where the input layer is multidimensional. It would be great if this library could support them.

Unsupervised Learning?

It seems that your library supports the idea of supervised learning, but would it be able to support unsupervised learning?

Perhaps varying weights as per some genetic algorithm and the user can provide a cost function?

Is there already functionality for this that I have missed?

Getting continuous outputs

Okay, actual question with the library now, not just me being stupid with neural networks.

How can I use this to predict continuous outputs? I want to use this to predict the time it takes to do something, based on 3 variables so classes don't really work.

Error handling

It would be great if go-neural would be a little more idiomatic in terms of error handling. Especially the engine package throws panics where the error could be returned and then handled properly instead.

Confused with n.Calculate(x) output

The result from n.Calculate isn't what I'd expect. The result always seems to be less than 1, is this intentional?

The dataset I'm training it on looks like:

{{col1, col2, col3},{class}},
{{20.625, 4.93, 22.95}, {5.39966}},
{{20.187, 4.63, 20.2894}, {0.109825}},
{{20.187, 4.63, 22.5018}, {6.87624}},
{{17.375, 7.44, 20.5605}, {16.6633}},
{{17.187, 7.44, 17.5643}, {0.738668}},
{{17.75, 7.44, 20.4978}, {10.664}},

Yet all my results seem to be like 0.9009051956176022 which lead me to think the result needed to be multiplied by 10 to get a suitable class, but when testing the network on inputs that should be classed >10, I still got results less than 1. What could be going wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.