对颜色进行分类

在Github上编辑


分类是神经网络可以做得很好的事情。在本文中我将演示如何建立神经网络的进化过程学习用Neataptic分类颜色的人。

颜色:

开始进化

迭代:0最佳健身效果:0

按颜色排序的集合

按NN排序的集合


它是如何工作的

这种分类的算法实际上是漂亮的容易的。我最大的一个问题是生成颜色,但我偶然发现允许您按名称随机生成颜色的Javascript库我需要什么(但它也产生了一个问题,请阅读下文)。所以我用它来创建一套训练:

函数createSet(){var集合=[];for(索引为COLORS){var color=颜色[索引];var randomColors=randomColor({色调:颜色,计数:PER_color,格式:'rgb'});for(randomColors中的var random){var rgb=随机颜色[random];random=rgb.substring(4,rgb.length-1).replace(//g,'').split(',');for(var y in random)random[y]=random[y]/255;var输出=Array.apply(null,Array(COLORS.length)).map(Number.prototype.valueOf,0);输出[指数]=1;push({input:random,output:output,color:color,rgb:rgb});}}返回集;}

颜色是一个以字符串形式存储所有颜色名称的数组。可能的颜色有上面列出的。接下来,我们将此rgb字符串转换为数组,并将值介于0和1之间。最后,我们使用单热点编码.请注意颜色阿拉伯联合酋长国对象属性与算法无关。

网络演进(set{迭代次数:1,突变率:0.6,elisitm:5,popSize:100,突变:方法。突变。FFW、,成本:methods.cost。MSE公司});

现在我们在neadaptic.js中创建了内置的遗传算法。我们定义我们想使用所有可能的突变方法并设置突变率高于正常值。加入精英主义,使默认人口翻倍尺寸。自己尝试参数,也许你会发现更好的参数!

适应度函数是算法中最重要的部分。基本上是计算均方误差整个集合的。Neataptic保存了此健身计算的编程。同时默认生长参数,因此网络将因为太大而受到惩罚。

将所有这些代码放在一起将创建一个颜色分类器。