不过,在跑代码之前,还要对数据进行预处理。
江寒先从报名信息表中,将性别信息仍然“健在”的行挑出来,只保留序号、姓名和性别,另存为label.xls。
这些记录一共9527条,大约占三万多条数据总数的30%。
它们对应着9527张真彩色照片。
24位真彩色的图片,每个像素点在内存里,要占用3个字节的存储单元。
每张照片有210×120个像素,这样读入一张照片,需要的内存空间就是210×120×3=个Byte。
9527条数据,共需要9527×=B≈686.88M≈0.7G!
这个内存开销,还是比较容易接受的。
但是,“感知机”的算法,需要进行大量浮点乘法运算。
对每个像素的每个RGB分量都算一遍?
没那个必要,也太浪费时间。
所以,聪明的做法,是先把照片数据“压缩”一下。
江寒给“感知机”的代码,添加了一个LoadData函数,用来读取和处理照片数据。
在这个函数里,先定义一个二维的整形数组Feature。
然后从label.xls中读出序号、姓名信息,按照刚才建立的索引表,找到对应的照片文件。
下一步,将照片读取到内存中,读取的同时,将每个像素二值化。
具体做法是:色彩浓度在阈值以上的像素,取值为1,低于阈值就让它为0。
这样一来,原本的真彩色照片,就被转换成了黑白轮廓图。
然后,再将轮廓图中的0或者1的取值,按照从左到右、从上到下的顺序,重新编排成一行数据,存放到数组Feature中。
Feature中的每一行,都存储了一张照片的二值化信息。
Loading...
未加载完,尝试【刷新】or【关闭小说模式】or【关闭广告屏蔽】。
尝试更换【Firefox浏览器】or【Chrome谷歌浏览器】打开多多收藏!
移动流量偶尔打不开,可以切换电信、联通、Wifi。
收藏网址:www.sisiread.com
(>人<;)