卷积神经网络python
时间: 2023-09-28 16:10:21 浏览: 47
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习网络模型,特别适用于图像和语音信号处理。下面是一个简单的Python实现示例:
首先导入所需的库:
```python
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers
```
创建一个CNN模型:
```python
model = tf.keras.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'))
# 输出层
model.add(layers.Dense(10, activation='softmax'))
```
在这个例子中,我们使用了三个卷积层和一个全连接层,最后输出10个类别的概率分布。模型的输入是28x28的灰度图像,有一个颜色通道。
编译和训练模型:
```python
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
```
在这里,我们使用了Adam优化器和交叉熵损失函数。训练模型需要一些时间,可以使用GPU加速。
评估模型:
```python
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
```
最后,我们在测试数据集上评估模型的准确性。