【发布时间】:2019-08-22 11:39:16
【问题描述】:
例如,FC 层(L.Linear)需要 input_size 和 output_size ,但这只是为 FC 中的权重矩阵设置的。但是输入图像大小可以是任意的,如何控制限制输入图像大小或输入其他特征大小?
【问题讨论】:
标签: chainer
例如,FC 层(L.Linear)需要 input_size 和 output_size ,但这只是为 FC 中的权重矩阵设置的。但是输入图像大小可以是任意的,如何控制限制输入图像大小或输入其他特征大小?
【问题讨论】:
标签: chainer
我制作了一个新的池化函数来考虑 Chainer 中的特定输出形状:
# pooling_func : F.max_pooling_2d or F.average_pooling_2d
def output_shape_pooling(self, x,output_size , pooling_func):
input_size = x.shape[-1]
stride = input_size // output_size
k_size = input_size - (output_size -1 ) * stride
x = pooling_func(x , stride=stride,ksize=k_size)
return x
【讨论】:
线性链接可以定义为两种方式
明确指定 input_size
l1 = L.Linear(input_size, output_size)
推断输入大小
l1 = L.Linear(None, output_size)
# Following code works same way, from chainer v2
# l1 = L.Linear(output_size)
当使用第二种方法时,输入大小在第一次前向计算时自动确定(并创建权重矩阵),并且此输入大小在前向计算后固定。
在你的情况下,你在卷积层之后使用FC层吗(这是CNN中图像分类网络的常见结构)? 在这种情况下,我猜图像大小应该始终与第一次前向计算相同(除非图像大小被全局池等忽略)。 我是否正确理解了您的问题?
【讨论】: