Hey,
wanted to the following simple thing with vectorflow:

I want to develop a simple MLP, which has 2 input neurons and one output neuron. The network should simply add the input values together, so [1,2] predicts [3] i guess.
I started in a newbish way to build the following code:

import vectorflow;


struct Obs // The represeneted data
{
float label; // Did i get that right that label would be the DESIRED output (3=1+2) float []features; // The features are the input i guess, so features = f.e. [1,2]
}

void main()
{
        
        auto net = NeuralNet()
            .stack(DenseData(2))
.stack(Linear(10)); // Is this the right way to construct the Net?
        
        // The training data
        Obs []data;
        
        
        data.length = 10;
        
        import std.random;
        import std.algorithm;
        foreach(ref Obs n; data)
        {
// The features are getting fille with random numbers between 0.5 and 5
                // The label becomes the sum of feature[0] and feature[1]
                n.features.length = 2;
                n.features[0] = uniform(0.5, 5);
                n.features[1] = uniform(0.5, 5);
                
                n.label = n.features.sum;
                writeln(n.features[0], " ", n.features[1], " ", n.label);
                assert (n.label == n.features[0] + n.features[1]);
        }
        
        net.learn(data, "logistic", AdaGrad(10, 0.1, 500), true, 3);
        
        auto val = net.predict(data[0]); // is this wrong?
        val.writeln;
}

Thanks :)

Reply via email to