2D convolution. Arguments: x: Tensor or variable. kernel: kernel tensor. strides: strides tuple. padding: string, `"same"` or `"valid"`. data_format: `"channels_last"` or `"channels_first"`. dilation_rate: tuple of 2 integers. Returns: A tensor, result
(x,
kernel,
strides=(1, 1),
padding='valid',
data_format=None,
dilation_rate=(1, 1))
| 4720 | |
| 4721 | @keras_export('keras.backend.conv2d') |
| 4722 | def conv2d(x, |
| 4723 | kernel, |
| 4724 | strides=(1, 1), |
| 4725 | padding='valid', |
| 4726 | data_format=None, |
| 4727 | dilation_rate=(1, 1)): |
| 4728 | """2D convolution. |
| 4729 | |
| 4730 | Arguments: |
| 4731 | x: Tensor or variable. |
| 4732 | kernel: kernel tensor. |
| 4733 | strides: strides tuple. |
| 4734 | padding: string, `"same"` or `"valid"`. |
| 4735 | data_format: `"channels_last"` or `"channels_first"`. |
| 4736 | dilation_rate: tuple of 2 integers. |
| 4737 | |
| 4738 | Returns: |
| 4739 | A tensor, result of 2D convolution. |
| 4740 | |
| 4741 | Raises: |
| 4742 | ValueError: if `data_format` is neither `channels_last` or |
| 4743 | `channels_first`. |
| 4744 | """ |
| 4745 | if data_format is None: |
| 4746 | data_format = image_data_format() |
| 4747 | if data_format not in {'channels_first', 'channels_last'}: |
| 4748 | raise ValueError('Unknown data_format: ' + str(data_format)) |
| 4749 | |
| 4750 | x, tf_data_format = _preprocess_conv2d_input(x, data_format) |
| 4751 | padding = _preprocess_padding(padding) |
| 4752 | x = nn.convolution( |
| 4753 | input=x, |
| 4754 | filter=kernel, |
| 4755 | dilation_rate=dilation_rate, |
| 4756 | strides=strides, |
| 4757 | padding=padding, |
| 4758 | data_format=tf_data_format) |
| 4759 | if data_format == 'channels_first' and tf_data_format == 'NHWC': |
| 4760 | x = array_ops.transpose(x, (0, 3, 1, 2)) # NHWC -> NCHW |
| 4761 | return x |
| 4762 | |
| 4763 | |
| 4764 | @keras_export('keras.backend.conv2d_transpose') |
nothing calls this directly
no test coverage detected