如何使用 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)。