如何使用 Tensorflow 使用 Python 创建卷积基础?
卷积神经网络通常由以下层组合而成:卷积层、池化层和密集层。
阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合创建神经网络?
卷积神经网络已用于为特定类型的问题(例如图像识别)产生出色的结果。可以使用 ‘Sequential’ 方法创建它,该方法存在于 ‘models’ 类中。可以使用‘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://www.tensorflow.org/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)控制。