前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写给设计师的人工智能指南:JS框架Synaptic

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

作者头像
mixlab
发布2018-04-16 16:51:38
1.3K1
发布2018-04-16 16:51:38
举报

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

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 分的学生是否能够通过期末考试。

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

代码如下:

代码语言:javascript
复制
第一行代码
new Architect.Perceptron(2,1,1);

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

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

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

以此类推~

训练数据输入后,调用

perceptron.trainer.train(trainingSet, trainingOptions);

代码语言:javascript
复制
即可开始训练.

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

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

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

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

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官方有说明文档,

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

代码语言:javascript
复制
色泽

青绿=>0,0,1

乌黑=>0,1,0

浅白=>1,0,0

代码语言:javascript
复制
根蒂

蜷缩=>0,0,1

稍蜷=>0,1,0

硬挺=>1,0,0

代码语言:javascript
复制
敲声

沉闷=>0,0,1

浊响=>0,1,0

清脆=>1,0,0

代码语言:javascript
复制
纹理

清晰=>0,0,1

稍糊=>0,1,0

模糊=>1,0,0

代码语言:javascript
复制
脐部

凹陷=>0,0,1

稍凹=>0,1,0

平坦=>1,0,0

代码语言:javascript
复制
触感

硬滑=>0

软粘=>1

代码语言:javascript
复制
密度,含糖率符合0-1的范围就不用转化啦.

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

结果可以看下图:

写入代码就是这样子的:

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

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

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主要用来判断各种是跟否的问题,如果应用到设计中,那就是"是不是"好设计的问题了.

对应的训练数据可以是:

构图

色彩

氛围

质感

空间

文字信息

这些参数构成的数据集.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科技Mix设计Lab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档