<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _dilated_conv_layer(self, output_channels, dilation_rate, apply_relu, name):
 """Create a dilated convolution layer. Args: output_channels: int. Number of output channels for each pixel. dilation_rate: int. Represents how many pixels each stride offset will move. A value of 1 indicates a standard convolution. apply_relu: bool. If True, a ReLU non-linearlity is added. name: string. Name for layer. Returns: a sonnet Module for a dilated convolution. """

    layer_components = [
        conv.Conv2D(
            output_channels, [3, 3],
            initializers=self._initializers,
            regularizers=self._regularizers,
            rate=dilation_rate,
            name="dilated_conv_" + name),
    ]
    if apply_relu:
      layer_components.append(lambda net: tf.nn.relu(net, name="relu_" + name))
    return sequential.Sequential(layer_components, name=name)