实验代码链接:
CSDN:
https://download.csdn.net/download/qq_38649386/12674161
GitHub:
总目录:
https://github.com/kernstarc/-keras-
对应章节:
《机器学习从入门到入职》: 第十章 , P348
深度学习卷积神经网络代码 - 框架 : keras - 数据集 : CIFAR10
实验原理:
待更新
实验结果:
实验结论:
前提条件:硬件受限,Epoch:5(轮数不够)
1.训练模型对CIFAR10数据集的loss/accuracy比mnist数据集差很多;
a.训练次数不够:
在增加训练次数的情况下,Epoch=40下,train_accuracy:62.3% ; test_accuracy:59.04%
但是最后模型评分曲线仍是上升趋势,还可以增加次数。
b.模型结构性问题:
主要原因是模型结构性问题,本卷积神经网络模型:
第一层:提取特征边缘;
第二层:提取特征是物体的局部特征;
仍需要更高层来提取特征,包含完整的物体特征;
实验问题及解决:
1.怎么本地加载CIFAR10数据集?
a.代码:
from keras.datasets import cifar10
(X_train,y_train),(X_test,y_test) = cifar10.load_data()
print(X_train.shape)
b.结果:
(50000, 32, 32, 3)
c.注意点:
1.文件位置
需要注意的是,CIFAR10 数据集不用像mnist数据集那样放在代码根目录下的data文件里面。
而是要放在keras的datasets文件夹下:用户./keras/datasets
2.下载数据集名称:
cifar-10-python.tar.gz 更改为: cifar-10-batches-py.tar.gz
3.链接:
https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
2.怎么根据mnist数据集卷积神经网络模型更改CIFAR10网络模型
a.input_shape
将mnist数据集模型的input_shape = (28,28,1)改成input_shape = (32,32,3)
这个是CIFAR10图片的格式
3.ValueError: Input 0 of layer sequential_1 is incompatible with the layer: expected ndim
翻译:
ValueError:层序列1的输入0与层不兼容:应为ndim。
原因:
CIFAR10数据集是5维的,不符合卷积的输入要求是4维
# 数据预处理
# np.newaxis
X_train = X_train[:,:,:,np.newaxis]
不需要像mnist数据集那样对数据进行预处理
删除上面代码后,X_train.shape : (50000, 32, 32, 3) , 符合卷积神经网络的输入要求是4维的要求。