0

例如,FC 层(L.Linear)需要 input_size 和 output_size ,但这只是为 FC 中的权重矩阵设置的。但是输入图像大小可以是任意的,如何控制限制输入图像大小或输入其他特征大小?

4

2 回答 2

1

我制作了一个新的池函数来考虑 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 
于 2019-08-22T03:39:16.760 回答
0

线性链接可以定义为两种方式

  1. 显式指定 input_size

    l1 = L.Linear(input_size, output_size)
    
  2. 推断输入大小

    l1 = L.Linear(None, output_size)
    # Following code works same way, from chainer v2
    # l1 = L.Linear(output_size)
    

当使用第二种方法时,输入大小在第一次前向计算时自动确定(并创建权重矩阵),并且该输入大小在前向计算后固定。

在您的情况下,您是否在卷积层之后使用 FC 层(这是 CNN 中图像分类网络的常见结构)?在这种情况下,我猜图像大小应该始终与第一次前向计算相同(除非图像大小被全局池等忽略)。我是否正确理解了您的问题?

于 2017-09-24T03:36:13.627 回答