如何使用 Python 和 TensorFlow 创建卷积基?


卷积神经网络通常由以下几层组成:卷积层、池化层和密集层。

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 协作创建神经网络?

卷积神经网络已被用于解决特定类型的问题(例如图像识别),并取得了显著成果。可以使用`models`类中的`Sequential`方法创建它。可以使用`add`方法将层添加到此卷积网络。

我们将使用 Keras Sequential API,它有助于构建顺序模型,用于处理简单的层堆栈,其中每一层只有一个输入张量和一个输出张量。

我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 帮助在浏览器上运行 Python 代码,无需任何配置,并可免费访问 GPU(图形处理单元)。Colaboratory 基于 Jupyter Notebook 构建。

print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
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'))
print("Description of arhcitecture is")
model.summary()

代码来源:https://tensorflowcn.cn/tutorials/images/cnn

输出

Creating the convolutional base
Description of arhcitecture is
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #  
=================================================================
conv2d (Conv2D)              (None, 30, 30, 32)        896      
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32)        0        
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 13, 13, 64)        18496    
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64)          0        
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 4, 4, 64)          36928    
=================================================================
Total params: 56,320
Trainable params: 56,320
Non-trainable params: 0

解释

  • 以上几行代码使用一种常见模式定义了卷积基。

  • 此模式是 Conv2D 和 MaxPooling2D 层的堆栈。

  • 输入是一个 CNN,它接受形状为 (image_height, image_width, color_channels) 的张量。

  • CNN 配置为处理形状为 (32, 32, 3) 的输入,这是 CIFAR 图像的格式。

  • 这可以通过将 `input_shape` 参数传递给我们的第一层来实现。

  • 每个 Conv2D 和 MaxPooling2D 层的输出都是形状为 (height, width, channels) 的 3D 张量。

  • 随着网络深度的增加,宽度和高度维度会缩小。

  • 每个 Conv2D 层的输出通道数由第一个参数控制(例如,32 或 64)。

更新于:2021年2月20日

浏览量:111

启动您的职业生涯

完成课程获得认证

开始学习
广告