Python Tensorflow - tf.keras.Conv2D() 函数

machine learningpythonserver side programming

简介

在深度学习中,计算机视觉是最重要的领域之一,用于与图像数据集相关的许多复杂和高级任务。它用于图像分析、对象检测、分割等。这主要通过 TensorFlow 和 Keras 的结合实现,后者提供了几个内置函数,可以自动化并使模型训练过程变得非常简单。

Conv2D 也是 Keras 库中最有用和最强大的函数之一,用于对图像应用卷积运算。在本文中,我们将讨论 Keras 中的 Conv2D 函数,它是什么,如何使用它,以及与之相关的其他一些讨论。

因此,在直接进入函数之前,让我们先讨论一下卷积运算。

什么是卷积运算?

卷积运算是卷积神经网络中用于从输入图像数据中提取信息或特征的运算类型。

这里使用卷积层,这些卷积层将这些运算应用于输入图像,并由不同的过滤器、它们的大小、填充、输入形状和激活函数组成。

在此卷积层中,将传递输入图像,向其应用所有具有指定大小的过滤器,还将应用填充和激活函数。该层将图像转换为不同的形式,然后将转换后的图像传递到下一层或下一个卷积层。

在卷积层中执行的这些操作称为卷积操作,这些操作对于处理和提取数据中的特征是必不可少的。

现在让我们讨论一下 tf.keras.Conv2D() 函数、它的含义以及它的参数。

tf.keras.Conv2D() 函数

正如我们上面所讨论的,卷积操作是在卷积层中执行的操作,它定义了某些参数,并且在图像中执行不同的操作以从图像中提取特征。要在 Keras 中执行此任务,请使用 Conv2D 函数。

tf.keras.Conv2D 是一个有助于在神经网络中创建卷积层的函数。借助此函数,我们可以通过指定其参数来创建一个全新的卷积层。

此函数需要多个参数作为输入;让我们逐一讨论它们。

过滤器数量:由于它是一个卷积运算,我们将有一个内核或过滤器应用于图像或输入图像以转换输入。第一个参数是过滤器的数量,它指定我们要对图像应用多少个过滤器。这应该谨慎选择,因为它会影响模型的性能和复杂性。

内核大小:内核大小是过滤器大小的度量,它指定我们要应用于图像的过滤器的大小。为了获得性能更好的模型,应谨慎选择内核大小。

激活函数:激活函数也是卷积层最重要的参数之一,其中要使用的激活函数是为每个卷积层定义的。每个卷积层可以有不同的激活函数,并且可以更改它以调整模型以获得更好的性能。

填充:众所周知,填充是出于多种目的而添加到图像中的额外像素层。卷积操作还涉及填充参数,这些参数用于指定要应用于特定图像中的图像的填充。在这里,我们可以为填充选择有效值或相同值。有效填充意味着输入图像大小将保持不变,不会应用任何填充,这是默认参数,而相同填充意味着将以保持图像大小不变的方式应用填充。

步幅:在创建卷积层时也会定义步幅,这基本上是内核在图像上移动的步长的度量。然后可以修改步幅以调整模型并提高其性能。

现在让我们将相同的概念应用于 tf.keras.Conv2D() 函数的代码示例。

tf.keras.Conv2D() 函数:代码示例

要将 tf.keras.Conv2D 函数应用于任何图像,首先我们需要安装所需的库,即 TensorFlow 和 Keras。

要安装所需的库,我们可以使用上面的代码:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

现在我们已经安装了所需的库,下一步是生成图像或加载现有图像。为此,请使用上面的代码:

image = np.random.rand(1, 224, 224, 3).astype(np.float32)

现在我们已经准备好了图像和库,我们将使用 tf.keras.Conv2D() 函数创建一个卷积层。

conv_layer1 = tf.keras.layers.Conv2D(16, (3, 3),
activation='relu', input_shape=(224, 224, 3))
conv_layer2 = tf.keras.layers.Conv2D(32, (3, 3),activation='relu')

我们可以在上面的代码中可以看到,我们创建了两个不同的卷积层,它们具有不同的滤波器数量和相同的内核大小。接下来,我们将输入图像发送到卷积层,以便从中提取 efeature4。

output1 = conv_layer1(image)
output2 = conv_layer2(output1)

我们可以看到,输入图像被发送到卷积层一,一旦预处理并完成操作,来自卷积层一的相同输出图像将作为输入图像发送到卷积层二。

结论

在本文中,我们讨论了 tf.keras.conv2D() 函数、卷积运算及其在卷积神经网络中的重要性,以及展示其用例的代码示例。本文将帮助人们更好地理解 Conv2D 函数,并帮助人们在必要时应用该函数。


相关文章