写给设计师的人工智能指南:JS框架Synaptic

上一篇写了tensorflow,发现tf对于设计师来说,其实门槛有点高.要折腾各种配置,还要gpu...其实是不利于快速入门的.

今天更新一篇,选择了一个js框架,非常容易使用.

本系列其他文章可点击查阅:

人工智能指南:图像

人工智能指南:虚拟私人助理

人工智能指南:Tensorflow快速入门

Synaptic是一个用于node.js和浏览器的JavaScript神经网络库,可以构建和训练基本上任何类型的一阶甚至二阶神经网络。

内置了4种经典的神经网络算法:

multilayer perceptrons(MLP) 

多层感知器

multilayer long-short term memory networks (LSTM)

长短期记忆网络

Liquid State Machine,(LSM) 

液体状态机

Hopfield神经网络


框架入门比较简单,按照官方的教程即可.

下面是用MLP的2个小练习:

MLP(多层感知器)神经网络是常见的ANN算法,它由一个输入层,一个输出层和一个或多个隐藏层组成。

1 预测学生期末考试能否通过

两个输入栏表示了学生学习的时间和期中考试的分数。

最终结果栏可以有两种值,1 或 0,来表示学生是否通过的期末考试。

例如,我们可以看到,如果学生学习了 35 个小时并在期中获得了 67 分,他 / 她就会通过期末考试。

现在我们假设我们想预测一个学习了 25 个小时并在期中考试中获得 70 分的学生是否能够通过期末考试。

这是一个二元分类问题,多层感知器可以从给定的样本(训练数据)进行学习,并且根据给出的新的数据点,进行准确的预测。

代码如下:

第一行代码
new Architect.Perceptron(2,1,1);

表示有2个参数输入,有1个隐藏层,输出1个参数.

参数的取值一般在0-1之间的范围.

所以35个小时,67分,我们可以表示为[0.35,0.67]

以此类推~

训练数据输入后,调用

perceptron.trainer.train(trainingSet, trainingOptions);

即可开始训练.

回到前文的问题,我们需要预测:
一个学习了 25 个小时并在期中考试中获得 70 分的学生是否能够通过期末考试。

可以调用
perceptron.activate([0.25,0.7]);
运行,结果为[0.99996429...]如无意外,该名学生可以通过期末考试~~~~
2 预测西瓜是不是好瓜
 
这边采用周志华老师在<机器学习>一书中的例子,作为训练集.

原始数据集长下面这个样子:

编号,色泽,根蒂,敲声,纹理,脐部,触感,密度,含糖率,好瓜

1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,0.697,0.46,是

2,乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,0.774,0.376,是

3,乌黑,蜷缩,浊响,清晰,凹陷,硬滑,0.634,0.264,是

4,青绿,蜷缩,沉闷,清晰,凹陷,硬滑,0.608,0.318,是

5,浅白,蜷缩,浊响,清晰,凹陷,硬滑,0.556,0.215,是

6,青绿,稍蜷,浊响,清晰,稍凹,软粘,0.403,0.237,是

7,乌黑,稍蜷,浊响,稍糊,稍凹,软粘,0.481,0.149,是

8,乌黑,稍蜷,浊响,清晰,稍凹,硬滑,0.437,0.211,是

9,乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,0.666,0.091,否

10,青绿,硬挺,清脆,清晰,平坦,软粘,0.243,0.267,否

11,浅白,硬挺,清脆,模糊,平坦,硬滑,0.245,0.057,否

12,浅白,蜷缩,浊响,模糊,平坦,软粘,0.343,0.099,否

13,青绿,稍蜷,浊响,稍糊,凹陷,硬滑,0.639,0.161,否

14,浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,0.657,0.198,否

15,乌黑,稍蜷,浊响,清晰,稍凹,软粘,0.36,0.37,否

16,浅白,蜷缩,浊响,模糊,平坦,硬滑,0.593,0.042,否

17,青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,0.719,0.103,否

这个比上面那个学习时间跟考试分数复杂多了.

如何也转化为适合神经网络运算的数据呢?

Synaptic官方有说明文档,

针对我们这个例子,我们可以这么转化

色泽

青绿=>0,0,1

乌黑=>0,1,0

浅白=>1,0,0

根蒂

蜷缩=>0,0,1

稍蜷=>0,1,0

硬挺=>1,0,0

敲声

沉闷=>0,0,1

浊响=>0,1,0

清脆=>1,0,0

纹理

清晰=>0,0,1

稍糊=>0,1,0

模糊=>1,0,0

脐部

凹陷=>0,0,1

稍凹=>0,1,0

平坦=>1,0,0

触感

硬滑=>0

软粘=>1

密度,含糖率符合0-1的范围就不用转化啦.

数据的处理需要写代码来完成,不然如果面对实际中上百万的数据,想想都头疼.

结果可以看下图:

写入代码就是这样子的:

第一行代码
new Architect.Perceptron(18,8,1);18表示有18个输入参数,可以数一下input数组,8表示有8个隐藏层,这个只要位于输入与输出层的数量之间即可.

输入以下代码:

训练完后,预测下:
我在训练的时候,把一条好瓜的数据跟一条不是好瓜的数据作为测试集,
没有列入训练中,这样就可以验证下训练的结果好坏了~

perceptron.activate([0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0.719,0.103])

结果:[0.5603304...]

不是好瓜


perceptron.activate([0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0.697,0.46])

结果:[0.9999...]

是好瓜~

以上是非常简单的2个例子,

练习后

我们可以广泛尝试各种数据集~

看看预测的效果咋样了~

补充:

MLP主要用来判断各种是跟否的问题,如果应用到设计中,那就是"是不是"好设计的问题了.

对应的训练数据可以是:

构图

色彩

氛围

质感

空间

文字信息

这些参数构成的数据集.


设计+科技=

自在园O设计Mix科技实验室。

(0)

相关推荐