用卷积搭建lenet的代码
时间: 2023-12-13 09:05:27 浏览: 29
下面是使用TensorFlow搭建LeNet模型的代码:
```python
import tensorflow as tf
class LeNet(tf.keras.Model):
def __init__(self):
super(LeNet, self).__init__()
self.conv1 = tf.keras.layers.Conv2D(filters=6, kernel_size=(5, 5), activation='relu', input_shape=(32, 32, 1))
self.avgpool1 = tf.keras.layers.AveragePooling2D()
self.conv2 = tf.keras.layers.Conv2D(filters=16, kernel_size=(5, 5), activation='relu')
self.avgpool2 = tf.keras.layers.AveragePooling2D()
self.flatten = tf.keras.layers.Flatten()
self.fc1 = tf.keras.layers.Dense(units=120, activation='relu')
self.fc2 = tf.keras.layers.Dense(units=84, activation='relu')
self.fc3 = tf.keras.layers.Dense(units=10, activation='softmax')
def call(self, inputs):
x = self.conv1(inputs)
x = self.avgpool1(x)
x = self.conv2(x)
x = self.avgpool2(x)
x = self.flatten(x)
x = self.fc1(x)
x = self.fc2(x)
x = self.fc3(x)
return x
```
LeNet模型包含两个卷积层和三个全连接层,其中第一个卷积层使用6个5x5的卷积核,第二个卷积层使用16个5x5的卷积核。两个卷积层之后都有2x2的平均池化层。最后三个全连接层分别有120、84和10个神经元,其中最后一个全连接层使用softmax激活函数。
输入数据的形状为32x32的灰度图像,因此输入张量的形状为(32, 32, 1)。在调用模型时,输入张量将通过每个层进行前向传递,最终输出一个形状为(10,)的张量,表示每个类别的预测概率。