Keras学习之三:用CNN实现cifar10图像分类模型
2017-07-29 21:32
621 查看
Keras学习之三:用CNN实现cifar10图像分类模型
1 卷积神经网络简介
卷积神经网络和全连接神经网络一样,都是由多个神经网络层连接而成。不同的是CNN一般是由多个卷积层,池化层交替连接起来,用于提取输入数据的高层特征,并缩小数据的维度。最后对提取出的特征进行神经网络分类形成最终的输出。更详细的卷积神经网络相关知识可参见第4节提供的链接。2 Keras对CNN的支持
keras.layers包中实现了与CNN相关的层模型,分别实现在convolutional和pooling模块中。2.1 convolutional模块
convolutional模块中实现了卷积层的层模型,用于数据的特征提取。层名 | 作用 | 原型 |
---|---|---|
Conv1D | 1维卷积层 | Conv1D(filters, kernel_size, strides=1, padding=’valid’) |
Conv2D | 2维卷积层 | Conv2D(filters, kernel_size, strides=(1, 1), padding=’valid’,dilation_rate=(1, 1)) |
UpSampling1D | 1维上采样,将数据重复指定的次数 | UpSampling2D(size=2) |
UpSampling2D | 2维上采样,将数据在2个维度上重复指定的次数 | UpSampling2D(size=(2, 2)) |
ZeroPadding2D | 边界填充0 | ZeroPadding2D(padding=(1, 1)) |
参数 | 说明 |
---|---|
filters | 卷积核的数目,也是处理后输出的深度 |
kernel_size | 过滤器的窗口大小 |
strides | 过滤器卷积的步长 |
padding | 补0策略,valid/same |
activation | 激活函数 |
dilation_rate | 指定dilated convolution中的膨胀比例 |
2.2 pooling模块
pooling模块中实现池化层的的最大池化与平均池化的层模型,用于数据维度的缩减。层名 | 作用 | 原型 |
---|---|---|
MaxPooling1D | 对1维输入进行最大值池化过滤 | MaxPooling1D(pool_size=2, strides=None, padding=’valid’) |
AveragePooling1D | 对1维输入进行平均池化过滤 | AveragePooling1D(pool_size=2, strides=None, padding=’valid’) |
MaxPooling2D | 对2维输入进行最大值池化过滤 | MaxPooling2D(pool_size=(2, 2), strides=None, padding=’valid’, data_format=None) |
AveragePooling2D | 对3维输入进行平均池化过滤 | AveragePooling2D(pool_size=(2, 2), strides=None, padding=’valid’, data_format=None) |
GlobalMaxPooling1D | 对1维输入进行全局最大值池化过滤 | GlobalMaxPooling1D() |
GlobalAveragePooling1D | 对1维输入进行全局平均值池化过滤 | GlobalAveragePooling1D() |
GlobalMaxPooling2D | 对2维输入进行全局最大值池化过滤 | GlobalMaxPooling2D() |
GlobalAveragePooling2D | 对2维输入进行全局平均值池化过滤 | GlobalAveragePooling2D() |
参数 | 说明 |
---|---|
pool_size | 过滤器的大小,通常取(2,2)或(3,3) |
strides | 过滤器的移动步长,取2使得输出shape缩小一半 |
padding | valid为1填充,same为0填充 |
data_format | 字符串,channels_first或channels_last之一 |
cifar10分类代码
下面的代码实现了一个下面结构的CNN模型,其结构为:卷积层->池化层->卷积层->池化层->全连结层->全连结层->Softmax层。import keras from keras.datasets import cifar10 from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D num_classes = 10 model_name = 'cifar10.h5' # The data, shuffled and split between train and test sets: (x_train, y_train), (x_test, y_test) = cifar10.load_data() x_train = x_train.astype('float32')/255 x_test = x_test.astype('float32')/255 # Convert class vectors to binary class matrices. y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) model = Sequential() model.add(Conv2D(32, (3, 3), padding='same', input_shape=x_train.shape[1:])) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Conv2D(64, (3, 3), padding='same')) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(num_classes)) model.add(Activation('softmax')) model.summary() # initiate RMSprop optimizer opt = keras.optimizers.rmsprop(lr=0.001, decay=1e-6) # train the model using RMSprop model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) hist = model.fit(x_train, y_train, epochs=40, shuffle=True) model.save(model_name) # evaluate loss, accuracy = model.evaluate(x_test, y_test) print loss, accuracy
4 CNN学习资料
深入浅出Tensorflow之四:卷积神经网络CNN浅析和历年ImageNet冠军模型解析
深度学习利器:TensorFlow与深度卷积神经网络
相关文章推荐
- 利用Keras实现多层感知器(MLP)模型和卷积神经网络(CNN)模型并对手写数字图像分类
- 迁移学习CNN图像分类模型 - 花朵图片分类
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
- 机器学习实验(十二):深度学习之图像分类模型AlexNet结构分析和tensorflow实现
- Tensorflow实战学习(十六)【CNN实现、数据集、TFRecord、加载图像、模型、训练、调试】
- tensorflow训练自己的数据集实现CNN图像分类2(保存模型&测试单张图片)
- 深度学习之图像分类模型Cifar10数据集解读
- 【深度学习】keras + tensorflow 实现猫和狗图像分类
- Keras学习(三)CIFAR10 识别---CNN 实现(1)
- 深度学习之图像分类模型inception v2、inception v3解读
- caffe for windows 下使用caffemodel 实现cifar10的图像分类
- Android端调用Caffe模型实现CNN分类
- 深度学习之图像分类模型AlexNet各层解读
- [caffe]深度学习之图像分类模型googlenet[inception v1]解读
- [caffe]深度学习之图像分类模型AlexNet解读
- [caffe]深度学习之图像分类模型AlexNet解读
- [caffe]深度学习之图像分类模型VGG解读
- [caffe]深度学习之图像分类模型VGG解读
- [caffe]深度学习之图像分类模型Batch Normalization[BN-inception]解读
- 利用CNN进行图像分类学习笔记