tensorflow中conv2d函数用法
时间: 2023-12-17 08:05:19 浏览: 130
在 TensorFlow 中,`tf.nn.conv2d()` 函数用于执行二维卷积操作。其使用方式如下:
```python
tf.nn.conv2d(input, filter, strides, padding, data_format=None, dilations=None, name=None)
```
其中,各参数的含义如下:
- `input`: 输入的张量,必须是一个四维张量,形状为 `[batch, in_height, in_width, in_channels]`。
- `filter`: 卷积核,必须是一个四维张量,形状为 `[filter_height, filter_width, in_channels, out_channels]`。
- `strides`: 步长,必须是一个长度为 4 的列表,格式为 `[batch_stride, height_stride, width_stride, channel_stride]`。
- `padding`: 指定卷积的方式,可选值为 `"SAME"` 或 `"VALID"`。
- `data_format`: 指定输入张量的格式,可选值为 `"NHWC"` 或 `"NCHW"`。
- `dilations`: 指定卷积核中各维度上的扩张步长,默认为 `[1, 1, 1, 1]`。
- `name`: 操作的名称。
下面是一个示例:
```python
import tensorflow as tf
# 输入张量
input = tf.random.normal([1, 28, 28, 3])
# 卷积核
filter = tf.Variable(tf.random.normal([3, 3, 3, 32]))
# 执行卷积操作
output = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding="SAME")
print(output.shape) # 输出:(1, 28, 28, 32)
```
在上面的示例中,`input` 张量的形状为 `[1, 28, 28, 3]`,其中 `1` 表示 batch 大小,`28` 表示图片高度,`28` 表示图片宽度,`3` 表示图片通道数。`filter` 张量的形状为 `[3, 3, 3, 32]`,其中 `3` 表示卷积核的高度和宽度,`3` 表示输入的通道数,`32` 表示输出的通道数。`strides` 参数设置为 `[1, 1, 1, 1]`,表示在 batch 和通道维度上的步长为 1,而在高度和宽度维度上的步长也为 1。`padding` 参数设置为 `"SAME"`,表示使用填充操作,使得输出形状与输入形状相同。最后,执行卷积操作,得到输出张量 `output`,其形状为 `[1, 28, 28, 32]`,即一个大小为 `28x28`,通道数为 `32` 的特征图。
阅读全文