def FCNN(): num_classes = 2 n_layers_enc = 32 n_layers_ctx = 128 n_input = 5 prob_drop = 0.25 layers = [] # Encoder pool = nn2.SpatialMaxPooling(2,2,2,2) layers.append(nn2.SpatialConvolution(n_input, n_layers_enc, 3, 3, 1, 1, 1, 1)) layers.append(nn.ELU()) layers.append(nn2.SpatialConvolution(n_layers_enc, n_layers_enc, 3, 3, 1, 1, 1, 1)) layers.append(nn.ELU()) layers.append(pool) # Context Module layers.append(nn2.SpatialDilatedConvolution(n_layers_enc, n_layers_ctx, 3, 3, 1, 1, 1, 1, 1, 1)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 2, 2, 2, 2)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 4, 4, 4, 4)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 8, 8, 8, 8)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 16, 16, 16, 16)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 32, 32, 32, 32)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_ctx, 3, 3, 1, 1, 64, 64, 64, 64)) layers.append(nn.ELU()) layers.append(nn2.SpatialDropout(prob_drop)) layers.append(nn2.SpatialDilatedConvolution(n_layers_ctx, n_layers_enc, 1, 1)) layers.append(nn.ELU()) # Nao havia no paper # Decoder layers.append(nn2.SpatialMaxUnpooling(pool)) layers.append(nn2.SpatialConvolution(n_layers_enc, n_layers_enc, 3, 3, 1, 1, 1, 1)) layers.append(nn.ELU()) layers.append(nn2.SpatialConvolution(n_layers_enc, num_classes, 3, 3, 1, 1, 1, 1)) layers.append(nn.ELU()) layers.append(nn.SoftMax()) # Nao havia no paper return nn.Sequential(*layers)
def build_spatial_unpooling_net(): pool = nn.SpatialMaxPooling(2, 2, 2, 2) unpool = nn.SpatialMaxUnpooling(pool) return nn.Sequential().add(pool).add(unpool)
input_size=(3, 4, 5), reference_fn=lambda i, _: i.select(1, 2)), OldModuleTest(nn.SelectTable, (1, ), input_size=[(1, ), (2, ), (3, ), (4, )], reference_fn=lambda i, _: i[1]), OldModuleTest(nn.SpatialAveragePooling, (2, 2), input_size=(2, 3, 6, 6)), OldModuleTest(nn.SpatialAveragePooling, (2, 2, 2, 2), input_size=(2, 3, 6, 6), desc='stride'), OldModuleTest(nn.SpatialAveragePooling, (2, 2, 2, 2, 1, 1), input_size=(2, 3, 6, 6), desc='stride_pad'), OldModuleTest( nn.SpatialAdaptiveMaxPooling, (4, 4), input_size=(2, 3, 8, 8), reference_fn=lambda i, _: nn.SpatialMaxPooling(2, 2).forward(i)), OldModuleTest(nn.SpatialAdaptiveMaxPooling, (4, 4), input_size=(2, 3, 7, 11), desc='irregular'), OldModuleTest(nn.SpatialConvolution, (3, 4, 3, 3), input_size=(2, 3, 6, 6)), OldModuleTest(nn.SpatialConvolution, (3, 4, 3, 3, 2, 2), input_size=(2, 3, 6, 6), desc='strided'), OldModuleTest(nn.SpatialConvolution, (3, 4, 3, 3, 2, 2, 1, 1), input_size=(2, 3, 6, 6), desc='padding'), OldModuleTest(nn.SpatialConvolutionLocal, (3, 2, 4, 4, 2, 2), input_size=(1, 3, 4, 4)), OldModuleTest(nn.SpatialConvolutionLocal, (3, 2, 6, 6, 2, 2, 2, 2), input_size=(2, 3, 6, 6),
def test_max_pooling(self): self._test_single_layer(nn.SpatialMaxPooling(3, 3, 1, 1, 1, 1))