你能将平均汇聚层作为卷积层的特殊情况实现吗?
import torch
import torch.nn as nn
in_channel, out_channel = 1, 1
padding = 2
avg_pooling = nn.Conv2d(kernel_size=2, in_channels=in_channel, out_channels=out_channel, padding=0,stride=padding,bias=False)
nn.init.constant_(avg_pooling.weight, 1/4)
print(avg_pooling.weight)
X = torch.range(start=1, end=16).reshape((1,1,4, 4))
y = avg_pooling(X)
print(y)
'''
Parameter containing:
tensor([[[[0.2500, 0.2500],
[0.2500, 0.2500]]]], requires_grad=True)
tensor([[[[ 3.5000, 5.5000],
[11.5000, 13.5000]]]], grad_fn=<ConvolutionBackward0>)
'''
你能将最大汇聚层作为卷积层的特殊情况实现吗?
假设汇聚层的输入大小为 𝑐×ℎ×𝑤 ,则汇聚窗口的形状为 𝑝ℎ×𝑝𝑤 ,填充为 (𝑝ℎ,𝑝𝑤) ,步幅为 (𝑠ℎ,𝑠𝑤) 。这个汇聚层的计算成本是多少?
$c*((h+p_h-p_h)/s_h + 1 )((w+p_w-p_w)/s_w + 1 )(p_h*p_w-1 +1)$ -1是加法个数 后面+1是除法个数
为什么最大汇聚层和平均汇聚层的工作方式不同?
一个是找最大的元素,更侧重于检测响应大的点,求均值则会在一定程度上进行空间位置的融合。
我们是否需要最小汇聚层?可以用已知函数替换它吗?
最小汇聚层指的是最小响应的值?这样会造成信息大量丢失?
除了平均汇聚层和最大汇聚层,是否有其它函数可以考虑(提示:回想一下softmax)?为什么它不流行?
softmax需要学习参数且计算复杂