由于自己的公众号的性质,自己一天只能发一篇文章。第一部分就是讲的主题是数据集的创建,第二部分是英语单词的小故事。
我只能说这分享的代码只能看看,因为最后识别的效果真的好垃圾,也没有提交到网站上去。以免扎了眼。但是这个过程仍是值得去记录的。毕竟预测也是需要调试的。整体代码从数据集的读取到训练、预测能够全体跑通。
一、dataset的创建
注意的是,在dataset里面也预留了为最后对test集合做预测的时候使用的dataset.下几篇有讲为什么这里为预测也做出了dataset.
下面的代码是在为训练的时候的创建的dataset,由于在前期的准备工作中我发现了(在jupyter notebook中构建代码,可以边写边查看,而且不用将前面的代码再去跑一遍),里面的手写字不光光有大写字母,也有一些其他的符号、空格之类的。
自己就开开心心的以为数据集的构建就完成了,再后来做训练的时候,总是代码跑着跑着就崩了,我就想着代码没有问题啊。要是有问题,开始跑就应该挂壁了啊。想想还是自己的数据集没有做好。
然后再次回到dataset里面去检查那些数据有问题。后来又发现里面居然还有小写字母。以为自己打开csv文件一眼扫过去,没看到小写字母。
我在做label的时候,将空格,-,和单引号,`全部的替换掉了,将小写字母全部的替换成大写。最后将大写字母映射到0-25区间,查看了全体图片的手写字体长度大多不超过21个。所以自己就先用定长的思路进行的填充。超过21的就算了,如果强行加到34长度,那最后网络的参数量就很大了。
import globimport reimport pandas as pdimport torchimport torchvision.transforms as transformsfrom PIL import Image, ImageFilefrom torch.utils.data import DatasetImageFile.LOAD_TR