Tensorflow——tf.nn.conv2d

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

除去name参数用以指定该操作的name,与方法有关的一共五个参数:

  • input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量,图片高度,图片宽度,图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一;
  • filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维;
  • 第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4;
  • 第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式(后面会介绍);
  • 第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true。
    结果返回一个Tensor,这个输出,就是我们常说的feature map
import tensorflow as tf

#[batch, in_height, in_width, in_channels]
#[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数]
input = tf.Variable(tf.random_normal([1, 4, 4, 5]))

#[filter_height, filter_width, in_channels, out_channels]
#[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数]
filter = tf.Variable(tf.random_normal([3, 3, 5, 1]))

#padding的值为‘VALID’,表示边缘不填充,当其为‘SAME’时,表示填充到卷积核可以到达图像边缘
op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')
init = tf.global_variables_initializer()

with tf.Session() as sess:
     sess.run(init)
     print(sess.run(op))

参考文献:
[1]. TensorFlow之卷积

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_by

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值