class_docstr: ResNet V2 model from
  `"Identity Mappings in Deep Residual Networks"
  <https://arxiv.org/abs/1603.05027>`_ paper.
  
  Parameters
  ----------
  block : gluon.HybridBlock
      Class for the residual block. Options are BasicBlockV1, BottleneckV1.
  layers : list of int
      Numbers of layers in each block
  channels : list of int
      Numbers of channels in each block. Length should be one larger than layers list.
  classes : int, default 1000
      Number of classification classes.
  thumbnail : bool, default False
      Enable thumbnail.
class_docstr_tok: ["ResNet","V2","model","from","`","``","Identity","Mappings","in","Deep","Residual","Networks","''","<","https",":","\/\/arxiv.org\/abs\/1603.05027",">","`","_","paper",".","Parameters","--","--","--","--","--","block",":","gluon.HybridBlock","Class","for","the","residual","block",".","Options","are","BasicBlockV1",",","BottleneckV1",".","layers",":","list","of","int","Numbers","of","layers","in","each","block","channels",":","list","of","int","Numbers","of","channels","in","each","block",".","Length","should","be","one","larger","than","layers","list",".","classes",":","int",",","default","1000","Number","of","classification","classes",".","thumbnail",":","bool",",","default","False","Enable","thumbnail","."]
code: def __init__(
      self,
      block,
      layers,
      channels,
      classes=1000,
      thumbnail=False,
      **kwargs,
  ):
      super(ResNetV2, self).__init__(**kwargs)
      assert len(layers) == len(channels) - 1
      self.features = nn.HybridSequential()
      self.features.add(nn.BatchNorm(scale=False, center=False))
      if thumbnail:
          self.features.add(_conv3x3(channels[0], 1, 0))
      else:
          self.features.add(
              nn.Conv2D(channels[0], 7, 2, 3, use_bias=False)
          )
          self.features.add(nn.BatchNorm())
          self.features.add(nn.Activation("relu"))
          self.features.add(nn.MaxPool2D(3, 2, 1))
  
      in_channels = channels[0]
      for i, num_layer in enumerate(layers):
          stride = 1 if i == 0 else 2
          self.features.add(
              self._make_layer(
                  block,
                  num_layer,
                  channels[i + 1],
                  stride,
                  in_channels=in_channels,
              )
          )
          in_channels = channels[i + 1]
      self.features.add(nn.BatchNorm())
      self.features.add(nn.Activation("relu"))
      self.features.add(nn.GlobalAvgPool2D())
      self.features.add(nn.Flatten())
  
      self.output = nn.Dense(classes, in_units=in_channels)
  
imports: import os
  from ....device import cpu
  from ...block import HybridBlock
  from ...None import nn
  from ....None import base
  from ....util import use_np, wrap_ctx_to_device_func
  from ....None import npx
label_desc: Use image node_id 1 to create a new ResNetV2 object from inherited base classes: HybridBlock with example: obj = ResNetV2(block, layers, channels, classes, thumbnail)