【问题标题】:How to do class/label assignment from network in Accord.net SOM(Kohonen's)如何在 Accord.net SOM(Kohonen's)中从网络进行类/标签分配
【发布时间】:2019-09-06 13:30:20
【问题描述】:

谁能告诉如何从训练有素的网络中获取/分配集群类/标签。

下面是代码示例,让您了解我如何执行它:


Accord.Math.Random.Generator.Seed = 0;

int numberOfInputs = 3;
int hiddenNeurons = 25;

double[][] input =
{
     new double[] { -1, -1, -1 },
     new double[] { -1,  1, -1 },
     new double[] {  1, -1, -1 },
     new double[] {  1,  1, -1 },
     new double[] { -1, -1,  1 },
     new double[] { -1,  1,  1 },
     new double[] {  1, -1,  1 },
     new double[] {  1,  1,  1 },
     // ...
};

var network = new DistanceNetwork(numberOfInputs, hiddenNeurons);
var teacher = new SOMLearning(network);
double error = double.PositiveInfinity;

for (int i = 0; i < 1000; i++)
    error = teacher.RunEpoch(input);

// how can I know/assign class/label of each item in input array?

【问题讨论】:

    标签: c# accord.net self-organizing-maps


    【解决方案1】:

    Accord 示例可能会提供更多帮助:

    Clustering (SOM)

    特别是本节:

    for (int y = 0, i = 0; y < 100; y++)
    {
        // for all pixels
        for (int x = 0; x < 100; x++, i++, ptr += 6)
        {
            Neuron neuron = layer.Neurons[i];
    
            // red
            ptr[2] = ptr[2 + 3] = ptr[2 + stride] = ptr[2 + 3 + stride] =
                (byte)Math.Max(0, Math.Min(255, neuron.Weights[0]));
    
            // green
            ptr[1] = ptr[1 + 3] = ptr[1 + stride] = ptr[1 + 3 + stride] =
                (byte)Math.Max(0, Math.Min(255, neuron.Weights[1]));
    
            // blue
            ptr[0] = ptr[0 + 3] = ptr[0 + stride] = ptr[0 + 3 + stride] =
                (byte)Math.Max(0, Math.Min(255, neuron.Weights[2]));
        }
    
        ptr += offset;
        ptr += stride;
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 2017-12-19
      • 2015-06-19
      • 2015-09-12
      • 1970-01-01
      • 2014-02-17
      • 2012-12-01
      • 2018-09-23
      相关资源
      最近更新 更多