1,采用cnn算法,目前准确率做到84.7%,用了几种图像预处理算法和旋转之类的增加训练样本的方法,效果不理想,后继续再改进,有高手欢迎分享源码一块学习
2,遇到的一些问题及解决办法:
(1)XXX is nan
交叉熵计算时出现了梯度爆炸,需要对预测值做clip_by_value进行截断,注意一下min,与max的设置
(2)对图像数据需要进行归一化
可以选用tensorflow自带的tf.image.per_image_standardization,
或用tf.image.convert_image_contrast对像素点数据转为浮点数,
或用tf.mulply(tf.cast(img,tf.float32),1.0/255.0)相当于将每个像素点除以255
(3)过拟合与交叉验证
把训练数据分为训练数据和验证数据,用训练数据验证,用验证数据验证,注意验证数据与训练数据不要有交集,
否则会造成过拟合
(4)shuffle_batch提示数据不足,出现异常
把数据分多个文件,多线程读取,
3,问题背景
http://www.lintcode.com/ai/cats-and-dogs/overview
4,源码地址
https://github.com/tingwu-zhang/ML/tree/master/catanddog/src