cnn stride and padding_CNN模型参数解析

03ebed197924aa66fa6487f229c2f0a6.png

输入以下的代码块

from keras.models import Sequentialfrom keras.layers import Conv2Dmodel = Sequential()model.add(Conv2D(filters=16, kernel_size=2, strides=2, padding='valid',  activation='relu', input_shape=(200, 200, 1)))model.summary()

我们不会训练该 CNN;相反,我们将使用该可执行文件根据所提供的参数研究卷积层的维度如何变化。

运行 python path/to/conv-dims.py 并查看输出。应该如下所示:

f707d6555ddedc34b12d973bf3349d76.png

公式:卷积层中的参数数量

卷积层中的参数数量取决于 filters、kernel_size 和 input_shape 的值。我们定义几个变量:

  • K - 卷积层中的过滤器数量
  • F - 卷积过滤器的高度和宽度
  • D_in - 上一层级的深度

注意:K = filters,F = kernel_size。类似地,D_in 是 input_shape 元组中的最后一个值。

因为每个过滤器有 F*F*D_in 个权重,卷积层由 K 个过滤器组成,因此卷积层中的权重总数是 K*F*F*D_in。因为每个过滤器有 1 个偏差项,卷积层有 K 个偏差。因此,卷积层中的参数数量是 K*F*F*D_in + K。

公式:卷积层的形状

卷积层的形状取决于 kernel_size、input_shape、padding 和 stride 的值。我们定义几个变量:

  • K - 卷积层中的过滤器数量
  • F - 卷积过滤器的高度和宽度
  • H_in - 上一层级的高度
  • W_in - 上一层级的宽度

注意:K = filters、F = kernel_size,以及S = stride。类似地,H_in 和 W_in 分别是 input_shape 元组的第一个和第二个值。

卷积层的深度始终为过滤器数量 K。

如果 padding = 'same',那么卷积层的空间维度如下:

  • height = ceil(float(H_in) / float(S))
  • width = ceil(float(W_in) / float(S))

如果 padding = 'valid',那么卷积层的空间维度如下:

  • height = ceil(float(H_in - F + 1) / float(S))
  • width = ceil(float(W_in - F + 1) / float(S))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用MATLAB实现RGB_CNN网络基础的例子: 1. 数据集准备 首先,我们需要准备一个数据集。假设我们有一个包含100张RGB图像的数据集,每张图像大小为100x100像素。为了训练我们的RGB_CNN网络,我们需要将数据集分成训练集和测试集。 我们可以使用MATLAB的ImageDatastore函数来加载和处理数据集。下面是一个例子: ```matlab imds = imageDatastore('path\to\dataset',... 'IncludeSubfolders',true,... 'LabelSource','foldernames'); [trainImgs,testImgs] = splitEachLabel(imds,0.7); ``` 2. 构建RGB_CNN网络 接下来,我们需要构建RGB_CNN网络。RGB_CNN网络是一个卷积神经网络,其中包含多个卷积层和池化层,以及几个全连接层。我们还需要添加一些正则化层(例如Dropout)来避免过拟合。 在MATLAB中,我们可以使用Convolution2DLayer,MaxPooling2DLayer,FullyConnectedLayer和DropoutLayer函数来构建RGB_CNN网络。下面是一个例子: ```matlab layers = [ imageInputLayer([100 100 3]) convolution2dLayer(3,32,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,64,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,128,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(256) reluLayer dropoutLayer(0.5) fullyConnectedLayer(128) reluLayer dropoutLayer(0.5) fullyConnectedLayer(2) softmaxLayer classificationLayer]; ``` 3. 训练RGB_CNN网络 现在,我们可以使用训练集来训练我们的RGB_CNN网络。在MATLAB中,我们可以使用trainNetwork函数来训练我们的网络。我们需要指定训练选项,如学习率、迭代次数等。 ```matlab options = trainingOptions('sgdm',... 'MaxEpochs',10,... 'InitialLearnRate',0.001,... 'MiniBatchSize',32,... 'Plots','training-progress'); rgb_cnn = trainNetwork(trainImgs,layers,options); ``` 4. 评估RGB_CNN网络 最后,我们可以使用测试集来评估我们的RGB_CNN网络的性能。在MATLAB中,我们可以使用classify函数来对测试集进行分类,并使用confusionchart函数来可视化分类结果。 ```matlab testLabels = testImgs.Labels; predLabels = classify(rgb_cnn,testImgs); confusionchart(testLabels,predLabels); ``` 这就是一个使用MATLAB实现RGB_CNN网络基础的例子。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值