neupy.architectures.resnet module
- neupy.architectures.resnet.resnet50(input_shape=(224, 224, 3), include_global_pool=True, in_out_ratio=32)[source]
ResNet50 network architecture with random parameters. Parameters can be loaded using neupy.storage module.
ResNet50 has roughly 25.5 million parameters.
Parameters: - input_shape : tuple
Network’s input shape. Defaults to (224, 224, 3).
- include_global_pool : bool
Specifies if returned output should include global pooling layer. Defaults to True.
- in_out_ratio : {4, 8, 16, 32}
Every layer that applies strides reduces height and width per every image. There are 5 of these layers in Resnet and at the end each dimensions gets reduced by 32. For example, 224x224 image will be reduced to 7x7 image patches. This parameter specifies what level of reduction we want to obtain after we’ve propagated network through all the convolution layers.
See also
- vgg16
- VGG16 network
- squeezenet
- SqueezeNet network
- resnet50
- ResNet-50 network
Notes
Because of the global pooling layer, ResNet50 can be applied to the images with variable sizes. The only limitation is that image size should be bigger than 32x32, otherwise network won’t be able to apply all transformations to the image.
References
Deep Residual Learning for Image Recognition. https://arxiv.org/abs/1512.03385
Examples
ResNet-50 for ImageNet classification
>>> from neupy import architectures, algorithms >>> >>> resnet = architectures.resnet50() >>> resnet (?, 224, 224, 3) -> [... 187 layers ...] -> (?, 1000) >>> >>> optimizer = algorithms.Momentum(resnet50)
ResNet-50 for custom classification task
>>> from neupy import architectures >>> resnet = architectures.resnet50(include_global_pool=False) >>> resnet (?, 224, 224, 3) -> [... 185 layers ...] -> (?, 7, 7, 2048) >>> >>> from neupy.layers import * >>> resnet = resnet >> GlobalPooling('avg') >> Softmax(21) (?, 224, 224, 3) -> [... 187 layers ...] -> (?, 21)
ResNet-50 for image segmentation
>>> from neupy import architectures >>> resnet = architectures.resnet50( ... include_global_pool=False, ... in_out_ratio=8, ... ) >>> resnet (?, 224, 224, 3) -> [... 185 layers ...] -> (?, 28, 28, 2048)