首先,利用百度抓来的图片,分为训练集和测试集
训练集:动漫图片8168张,非动漫图片9906张。
测试集:动漫图片1785张,非动漫图片1984张
使用cifar10的分类神经网络,按照“动漫”0,“非动漫”1进行训练网络。
每批次60个数据,训练了20000批,发现正确率的评估结果约为0.46…
什么鬼。。。测试集中动漫图片占得比例为 1785/(1785+1984) = 0.473。。。
把输出结果logits打印出来,发现logits基本上是[-0.09, 0.09]…这样的数据,难怪正确率与比例差不多。。。
修改为网络结构,把原来的local3层换成conv3卷积层,并对conv3的结果pool,输出一个[60, 3, 3, 64]的张量到local4,后面的结构跟之前的都一样。跑了一会儿,发现conv3层的稀疏率接近为1了。。。网络结构有问题。
继续修改网络结构。原来的数据张量使用[32, 32, 3],不进行randomCrop了,同时,去掉了conv2后面的pool层。结果,训练速度降低了,每批次耗时是之前的三倍左右,conv3的稀疏性很快跳到了0.96,conv1和conv2的稀疏性很不稳定,total_loss有所下降。是不是卷积层太多了呢,去掉conv3试试,
去掉了conv3,现在网络结构是input(32*32*3)->conv1->conv2->local3->soft_linear
训练速度是cifar的2倍左右,看来网络“宽度”对训练速度的影响很大。
前200步中,conv2的稀疏率直奔0.9375,并维持不变,到了400步,才慢慢的以抛物线的形式下降到0.55…好奇怪,在1400步之后慢慢开始回升。
我哭着看到我的评估的正确率从0.46下降到0.22…什么鬼,怎么比0.47低这么多!!!
不过结果你应该猜到了,我测试集的标签搞反了 O.O,也就是说,正确率大概升到了0.78左右。
把测试集的标签改回来,正确率已经变为0.779了。