上一篇写了tensorflow,发现tf对于设计师来说,其实门槛有点高.要折腾各种配置,还要gpu...其实是不利于快速入门的. 今天更新一篇,选择了一个js框架,非常容易使用. 本系列其他文章可点击查阅: Synaptic是一个用于node.js和浏览器的JavaScript神经网络库,可以构建和训练基本上任何类型的一阶甚至二阶神经网络。 内置了4种经典的神经网络算法: multilayer perceptrons(MLP) 多层感知器 multilayer long-short term memory networks (LSTM) 长短期记忆网络 Liquid State Machine,(LSM) 液体状态机 Hopfield神经网络 框架入门比较简单,按照官方的教程即可. 下面是用MLP的2个小练习:
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科技实验室。
|
|
来自: Mixlab交叉学科 > 《待分类》