lenet5卷积神经网络TensorFlow代码实现
时间: 2024-12-12 09:14:11 浏览: 10
LeNet-5是一个经典的卷积神经网络模型,它是由Yann LeCun于1998年为了手写数字识别任务而设计的。以下是使用TensorFlow库实现LeNet-5的一个简单版本:
```python
import tensorflow as tf
from tensorflow.keras import layers
class LeNet5(tf.keras.Model):
def __init__(self):
super(LeNet5, self).__init__()
self.conv1 = layers.Conv2D(6, (5, 5), activation='relu', padding='same')
self.pool1 = layers.MaxPooling2D((2, 2))
self.conv2 = layers.Conv2D(16, (5, 5), activation='relu', padding='valid')
self.pool2 = layers.MaxPooling2D((2, 2))
self.flatten = layers.Flatten()
self.fc1 = layers.Dense(120, activation='relu')
self.fc2 = layers.Dense(84, activation='relu')
self.fc3 = layers.Dense(10, activation='softmax') # 输出层,用于10分类
def call(self, x):
x = self.conv1(x)
x = self.pool1(x)
x = self.conv2(x)
x = self.pool2(x)
x = self.flatten(x)
x = self.fc1(x)
x = self.fc2(x)
return self.fc3(x)
# 初始化并编译模型
model = LeNet5()
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 使用数据训练模型(这里省略了加载和预处理数据的部分)
```
这个代码创建了一个包含两个卷积层、两次池化操作、全连接层的LeNet-5模型,并进行了编译。注意,实际应用中你需要提供合适的训练数据和适当的训练过程。
阅读全文