如何控制chainer中的输入特征尺寸/尺寸?

时间:2017-09-22 13:07:02

标签: chainer

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

2 个答案:

答案 0 :(得分: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)
    
  3. 当使用第二种方法时,输入大小在正向计算的第一次自动确定(并且创建权重矩阵),并且此输入大小在正向计算后固定。

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

答案 1 :(得分:0)

我已经创建了一个新的合并功能,用于考虑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