[TOC]
题目
Dog Breed Identification (120 breeds)
环境平台
Windows10 + Spyder(python3.6) + tensorflow 1.8 + keras 2.1.6
完成情况
- 具体流程和代码注释什么的写在 <艰难的历程.md>里面了。
数据处理部分
- 因为内存只有8G, 8000张图片全加载会导致memoryError错误。所以只用了四分之一,大概两千多张进行训练....(train.xlsx有删减)
- 并不知道那个120_class_labels.xlsx和sample_submissiion有什么用...
模型搭建部分
- 尝试了两个模型,分别来自github上一个keras例程,和上次生产实习李华清学长给的一段代码。
- 第一个模型: 使用ResNet50+Flatten+BatchNormalization+Dense ....最后大概有五十多层。但训练速度奇慢无比,一次epoch大概得一个半小时...最后被我抛弃了。
- 第二个模型:使用Conv2D+MaxPooling2D+Flatten+Dense。训练速度一次大概十分钟左右。acc也很低。。具体情况见 <艰难的历程.md>
模型微调部分
- ...大概是毫无进展了。。因为我最终的acc也只有0.0187....这怎么调...
遇到的问题和一些疑惑
关于训练速度慢的猜想...
- 数据的格式和大小..?
- 因为之前学长带着做过一次模型训练,大概六万个数据,几分钟就训练完了....这次只有两千的数据却很慢不知道是不是不正常。
- 然后去翻了上次的训练数据集,大概只有10.9M左右(可能都是文本?),但这次的两千张图片大概82.5M 。这么解释合理吗..
- 图片导入的尺寸
img = load_img(train_image_dir + '{}.jpg'.format(f), target_size=(img_height, img_width))
- 因为给出的训练图片基本都是500 375左右的,所以我设置img_height和img_width为256 256 。。会不会太大了
关于准确率的猜想...
- 先贴一个5次epoch的结果
Train on 2034 samples, validate on 227 samples
Epoch 1/5
2034/2034 [==============================] - 553s 272ms/step - loss: 4.7846 - acc: 0.0098 - val_loss: 4.7858 - val_acc: 0.0088...] - ETA: 4:28 - loss: 4.7849 - acc: 0.00881984/2034 [============================>.] - ETA: 13s - loss: 4.7846 - acc: 0.0101
Epoch 2/5
2034/2034 [==============================] - 566s 278ms/step - loss: 4.7823 - acc: 0.0093 - val_loss: 4.7850 - val_acc: 0.0088...] - ETA: 7:17 - loss: 4.7835 - acc: 0.0059
Epoch 3/5
2034/2034 [==============================] - 525s 258ms/step - loss: 4.7801 - acc: 0.0093 - val_loss: 4.7844 - val_acc: 0.0088
Epoch 4/5
2034/2034 [==============================] - 510s 251ms/step - loss: 4.7781 - acc: 0.0103 - val_loss: 4.7838 - val_acc: 0.0044
Epoch 5/5
2034/2034 [==============================] - 514s 252ms/step - loss: 4.7763 - acc: 0.0133 - val_loss: 4.7833 - val_acc: 0.0044..] - ETA: 7:00 - loss: 4.7712 - acc: 0.0187
- 训练集数据太少了?
- 题目给出了八千多个,我只用了四分之一。两千个数据,有一百多个标签,每个标签平均用十几个图片训练是不是有点少???otz (这也太费内存了)
- 是不是和图片导入尺寸有关系。。(我那个256*256)
- 或者只是单纯的训练次数少???(令epoch=50 ???)