Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 层叠卷积层在CNN中是如何工作的?_Python_Tensorflow_Keras_Deep Learning_Conv Neural Network - Fatal编程技术网

Python 层叠卷积层在CNN中是如何工作的?

Python 层叠卷积层在CNN中是如何工作的?,python,tensorflow,keras,deep-learning,conv-neural-network,Python,Tensorflow,Keras,Deep Learning,Conv Neural Network,我很难理解CNN中2个或更多卷积层(每个层后面跟着一个池层)的工作方式 将输入视为3通道300x300图像。如果第一个卷积层有32个卷积,第二个层有64个卷积层,那么第一个层将创建32个要素贴图。但是第二层创建了多少个要素地图?64个卷积中的每个卷积是否作用于先前生成的32个要素图,从而总共创建32*64=2048个要素图?还是发生了别的事情 与该问题相关的一个简单代码是: model = keras.models.Sequential([ keras.layers.Conv2D(32, (3,

我很难理解CNN中2个或更多卷积层(每个层后面跟着一个池层)的工作方式

将输入视为3通道300x300图像。如果第一个卷积层有32个卷积,第二个层有64个卷积层,那么第一个层将创建32个要素贴图。但是第二层创建了多少个要素地图?64个卷积中的每个卷积是否作用于先前生成的32个要素图,从而总共创建32*64=2048个要素图?还是发生了别的事情

与该问题相关的一个简单代码是:

model = keras.models.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(300, 300, 3)),
keras.layers.MaxPooling2D(2, 2),

keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D(2, 2)])

第一个卷积层有32个过滤器,但它适用于图像的所有三个通道,因此第一个Conv2D后的特征映射为32x3=96,然后第二个Conv2D的64个过滤器分别适用于96个特征映射中的每个,因此第二个Conv2D后的特征映射为64x96=。。。(填空)。

但为了简单起见,Keras只显示(…,32)或(…,64)。您可以使用model.summary()进行检查。

输入矩阵的通道数和每个过滤器中的通道数必须匹配,才能执行元素相乘。

因此,第一和第二卷积的主要区别在于,第一卷积中输入矩阵中的通道数为3,因此我们将使用32个滤波器,其中每个滤波器有3个通道(内核矩阵的深度)

对于第二次卷积,输入矩阵有32个通道(特征映射),因此此卷积的每个滤波器也必须有32个通道。例如:64个过滤器中的每一个都有32@3x3形状

单个滤波器的卷积步长的结果32@3x3形状为WxH(宽度、高度)形状的单通道。应用所有64个过滤器后(其中每个过滤器都有形状:32@3x3)我们将得到64个通道,其中每个通道是单个滤波器卷积的结果