卷积神经网络(CNN)是一种用于图像处理的深度神经网络。它利用卷积层对图像进行特征提取,并通过神经网络分类器进行分类。
CNN在图像分类中的主要应用步骤是:
- 卷积层:使用滤波器(神经元)在图像上计算二维离散卷积,进行特征提取。通过多层卷积可以学习到图像的高级特征。
- 池化层:使用最大池化或平均池化对卷积层输出进行降维,以消除过拟合和提高模型的泛化能力。
- 全连接层:卷积层和池化层的输出展开为一维向量,输入到全连接层分类器中。
- 非线性激活函数:一般在各层之间加入非线性激活函数ReLU进行转换。
- 训练与优化:使用交叉熵损失函数,通过反向传播算法和优化算法对各层参数进行优化。
代码示例:
python
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(28, 28, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(10))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=32)