我正在为CNN做准备。我读了一些关于训练MNIST数据集的论文使用CNN。图像的尺寸为28x28并使用架构5层:输入> conv1-maxpool1> conv2-maxpool2>完全连接>输出
Convolutional Layer #1
- Computes 32 features using a 5x5 filter with ReLU activation.
- Padding is added to preserve width and height.
- Input Tensor Shape: [batch_size, 28, 28, 1]
- Output Tensor Shape: [batch_size, 28, 28, 32]
Pooling Layer #1
- First max pooling layer with a 2x2 filter and stride of 2
- Input Tensor Shape: [batch_size, 28, 28, 32]
- Output Tensor Shape: [batch_size, 14, 14, 32]
Convolutional Layer #2
- Computes 64 features using a 5x5 filter.
- Padding is added to preserve width and height.
- Input Tensor Shape: [batch_size, 14, 14, 32]
- Output Tensor Shape: [batch_size, 14, 14, 64]
Pooling Layer #2
- Second max pooling layer with a 2x2 filter and stride of 2
- Input Tensor Shape: [batch_size, 14, 14, 64]
- Output Tensor Shape: [batch_size, 7, 7, 64]
Flatten tensor into a batch of vectors
- Input Tensor Shape: [batch_size, 7, 7, 64]
- Output Tensor Shape: [batch_size, 7 * 7 * 64]
Fully Connected Layer
- Densely connected layer with 1024 neurons
- Input Tensor Shape: [batch_size, 7 * 7 * 64]
- Output Tensor Shape: [batch_size, 1024] Output layer
- Input Tensor Shape: [batch_size, 1024]
- Output Tensor Shape: [batch_size, 10]
在conv1中,1输入使用5x5滤波器计算32个特征,而conv2使用来自conv1的32个输入计算使用相同滤波器的64个特征。什么是基于?选择的32,64,2x2滤波器等参数?它们是基于图像的大小吗?
如果图像尺寸大于28x28,例如128x128。我应该增加5层的层数吗?以上参数如何随其他尺寸的图像而改变?
感谢提前
答案 0 :(得分:1)
在它的基础级别,这些输入称为HyperParameters,通常不由任何特定的规则集定义。也就是说,我们经常使用经验法则(启发式)来选择一组超参数,然后使用超参数优化来提高性能或效率等。
对此的一个很好的解释是Here
修改强> 本文中的更多信息 - 它是一个被广泛研究的问题,请查看Arxiv和Stats.Stackexchange以获取更多信息,但这是我在学习时使用的一篇很棒的论文Here
答案 1 :(得分:1)
根据什么选择诸如32,64,2x2过滤器之类的参数?他们会吗 是基于图片的大小?
您提到的参数(32,64,2x2)是卷积层的过滤器数量和过滤器大小。它们是训练模型时可以选择和调整的超参数。您可以根据数据集,应用程序和模型的性能对其进行控制。
对于许多过滤器,您可以使用它来控制模型学习的功能数量。在模型中,最大池化层之后,过滤器数量从32增加到64。带有2x2滤镜的Maxpooling层会将特征数量减少一半。通过将过滤器数量增加一倍,它将在模型中保留相同数量的特征。按照惯例,在2x2 maxpooling层之后,过滤器数量将因此增加一倍。
对于滤镜大小,如果用于maxpooling层,它将确定特征缩小的大小。如果用于卷积层,它将确定如何学习输入图像的细节。例如,如果您尝试使用小像素或特征不同的对象的图像,则应选择较小的滤镜大小,例如3x3或5x5。反之亦然,适用于大型过滤器。
理解这些超参数的一种方法是了解它们如何影响模型的学习,并且您将知道如何根据每种情况来控制它们。另一种方法是查看如何为其他人使用的模型设置这些值。您可能会发现一些约定,例如在maxpooling层之后增加过滤器数量。
如果图像尺寸大于28x28,例如128x128。我是不是该 增加5层以上的层数?以上参数如何 改变了其他尺寸的图像?
关于图层,拥有更多的图层将使您的模型更深入,并产生更多的参数。这意味着您的模型将变得更加复杂,并能够更多地了解图像功能。因此,拥有较深的体系结构可以使学习高分辨率的图像受益。因为高分辨率意味着要学习许多功能。但是,这也将视情况而定。好的方法是从几层简单的模型开始,逐渐增加层数,同时使模型受益。