cnn卷积神经网络Python
时间: 2025-01-01 12:33:19 浏览: 9
### 使用Python实现卷积神经网络(CNN)
#### 定义CNN模型架构
卷积神经网络主要由卷积层、激活层、池化层以及全连接层构成[^2]。下面是一个基于TensorFlow和Keras库构建简单CNN的例子:
```python
import tensorflow as tf
from tensorflow.keras import layers, models
def create_cnn_model():
model = models.Sequential()
# 添加第一个卷积层与最大池化层
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
# 添加第二个卷积层与最大池化层
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
# 添加第三个卷积层
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
# 将三维特征图展平成一维向量
model.add(layers.Flatten())
# 添加全连接层
model.add(layers.Dense(64, activation='relu'))
# 输出层,假设分类任务有10类
model.add(layers.Dense(10))
return model
```
此代码片段展示了如何创建一个基础版本的CNN用于图像处理任务。
#### 编译并训练模型
为了使上述定义好的CNN能够执行具体的预测工作,在实际操作之前还需要对其进行编译,并指定损失函数、优化器以及其他参数配置;接着就可以利用准备好的数据集来对该模型进行训练了。
```python
model = create_cnn_model()
# 编译模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 假设已经准备好训练数据train_images和标签train_labels
history = model.fit(train_images, train_labels, epochs=5)
```
这段程序说明了怎样设置好模型之后再通过调用`fit()`方法来进行一轮或多轮次的学习过程。
#### 测试模型性能
完成训练阶段后,可以使用测试集中未见过的数据评估最终得到的模型效果好坏程度。
```python
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'\nTest accuracy: {test_acc}')
```
这里给出了计算测试集上准确率的方法,从而帮助判断所建立起来的CNN是否具备良好的泛化能力。
阅读全文