不过,在跑代码之前,还要对数据进行预处理。
江寒先从报名信息表中,将性别信息仍然“健在”的行挑出来,只保留序号、姓名和性别,另存为label.xls。
这些记录一共9527条,大约占三万多条数据总数的30%。
它们对应着9527张真彩色照片。
24位真彩色的图片,每个像素点在内存里,要占用3个字节的存储单元。
每张照片有210x120个像素,这样读入一张照片,需要的内存空间就是210x120x3=75600个byte。
9527条数据,共需要9527x75600=720241200b≈686.88m≈0.7g!
这个内存开销,还是比较容易接受的。
但是,“感知机”的算法,需要进行大量浮点乘法运算。
对每个像素的每个rgb分量都算一遍
没那个必要,也太浪费时间。
所以,聪明的做法,是先把照片数据“压缩”一下。
江寒给“感知机”的代码,添加了一个loaddata函数,用来读取和处理照片数据。
在这个函数里,先定义一个二维的整形数组feature。
然后从label.xls中读出序号、姓名信息,按照刚才建立的索引表,找到对应的照片文件。
下一步,将照片读取到内存中,读取的同时,将每个像素二值化。
具体做法是:色彩浓度在阈值以上的像素,取值为1,低于阈值就让它为0。
这样一来,原本的真彩色照片,就被转换成了黑白轮廓图。
然后,再将轮廓图中的0或者1的取值,按照从左到右、从上到下的顺序,重新编排成一行数据,存放到数组feature中。
feature中的每一行,都存储了一张照片的二值化信息。
一共9027张照片,就需要9027行。
全部照片处理完毕后,就得到了一个巨大的二维数组feature。
它有25200列、9027行!
接下来,定义一个拥有9027个整形元素的一维数组label。
从label.xls中读入性别信息,男生设为1,女生设为0,存放在数组label中。
feature加上对应的label,就构成了训练数据集。
训练“感知机”时,将一行行feature代入公式中,进行加权和运算,其结果再通过sign函数,转换为0或1,然后和对应的label值对照。
如果不相符,就调整权重和偏置,然后重新计算。
当每一个feature代入公式后,都能计算出正确的label时,就得到了一组权重和偏置。
也就是说,构建出了一个可用的数学模型。
依据这个模型,计算机就可以读入任何一张同尺寸、类型的照片,对其二值化的数据代入模型中运算,并根据运算结果判断分类归属。
这就是典型的机器学习过程,计算机从数据中自己“学”到了某种规律。
即使这种规律,人类并不一定完全理解,也不见得能用数学语言解释清楚……
剩下的就比较简单了。
接下来,江寒又添加了几个函数,用来输出运算结果、观察运行情况等。
最后,从头调试了一遍,确认没啥bug后,将代码重新编译,然后运行了起来。
屏幕上有一些数字,表示当前正在处理的数据,和训练进度的百分比。
十分钟后,后一个数字才刚刚达到1.3%。
这表示,完整训练一遍,大约需要13个小时……
之所以这么慢,主要是江寒的程序,比较追求稳定性,以及调试的方便、快捷,并没特别讲究执行效率。
当然,即使他用心优化,估计也需要8个小时以上,才能完成训练。
虽然有点慢,但其实没什么关系,训练过程并不需要人工干预,挂机等着就行。
第二天早晨,江寒起床后,先看了下训练进度,还差了大约13%才能完成,就先去班级上课。
中午吃完饭回来,训练终于结束了。
而存放权重和偏置参数的weight数组,也以内存映像的方式,保存在了一个二进制文件中。
接下来就简单了。
重建一个一模一样的感知机模型,加载上这个权重文件,就可以用它来判断剩余照片的性别了。
江寒重新改写代码,然后运行。
这次十分迅速,只用了不到20分钟,就将两万一千来张照片,全部处理完毕。
这就是“感知机”,或者说“人工神经网络”的特点。
训练起来特别耗时,一旦训练完成,工作起来非常快捷。
至于正确率,江寒初步估计,大大超过99%,21000条未经训练的数据里,判断出错的,绝不超过10人。
比人类肉眼的识别率低不到哪里去。
事实上,“感知机”或者说“人工神经网络”的错误率,跟训练数据、测试数据的质量有很大关系。
如果比较规范,达到100%的识别率都不算稀奇。
可惜实际运用中,总有个别实例,奇葩得超乎想
猜你喜欢
- 琉长生
- 【女扮男装,强强,1v1】叶潇然此生住过孤儿院,当过影后,被挚爱背叛成过通缉犯,只因一双通灵宝眼最后落得于狗争食惨死下场 夜萧然,夜家唯一的继承人,却是天生懦弱无能甚至被人打死无人问津 再睁眼,叶潇然成了夜萧然,偶得最强(坑爹)不是,是最强通灵系统,废物变天才,学渣变学霸,天生影帝,网文大神,最强编
- 去归休
- 【2019“玄幻王者”征文】参赛作品
- 妍暖花开
- 因为一只猫咪,我重生到了少年时期。因为一个系统,我开始文抄公的生活。因为一本小说,我开启了虚拟网游时代。且看在新的世界,我赵暖阳如何称王称霸顺便把宠物猫进化成人,来把恩爱秀。
- 司唐
- 一朝意外,变身萝莉遇见三年前自己敬仰的电竞男神,然而这个男神有点怪。顾家二少为了活下去也是忍了,系统发布位面任务:活下去,离开这里你就能回到现实世界然而,顾二少摸遍自己浑身上下,还是那个小萝莉。某游戏渣还跑过来叫嚣:拖大神后腿的渣渣
- 理想花
- 失忆的紫
- 秦晚前世被觊觎她未婚夫和财产的姑姑、表妹逼到跳楼,断了腿、污了名,还连累了至亲至爱。重生回到危急时刻,正想着如何反败为胜,被一高能虐渣系统砸中。还没来得及高兴,某统哭叫绑错了人。它从亿年后奔来,本是要助她隔壁家的帅哥哥逆袭。非死无法解除绑定,黑芝麻馅萌妹子与同属性系统…建立互助联盟。于是,霸道小哥哥
- 小强
- 小强
- 戏沐
- 前世她战战兢兢,当上了职场经理,却在遭受男友闺密的背叛意外重生,系统在手,天下我有。重生一世,又怎么能继续受人欺压?坑爹系统,白猫无常,为她打开了一个新的世界,从此,一人扮演两个角色,走私,黑拳,楼盘,皆是她的势力,对此,她表示很无辜,为啥你们一个个的都要找我麻烦?