如何使用 Tensorflow 使用 Python 创建卷积基础?

pythonserver side programmingprogrammingtensorflow

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

阅读更多: 什么是 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)控制。


相关文章