tensorflow中tf.nn.conv2d()函数讲解

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

 

# 第一个参数input:表示输入数据               其形状是 [batch_size, in_height, in_width, in_channels]


# 第二个参数filter:表示卷积核大小           其形状是[filter_height, filter_width, in_channels, out_channels] 注意一下,第一个参数和第二个参数in_channels必须是一样的  而且out_channels表示输出的频道数  我们做卷积提取图像特征的时候 一般会把out_channels设置的越来越大  应该是找的越来越具体


# 第三个参数strides:表示卷积核在输入数据上每次移动多少步

 


# 第四个参数:网上有很多的例子将padding中SAME 和 VALID,但是都是模糊不清的 我通过一个例子解释一下

下面是个直观图

假设输入图像的高和宽是:   5 * 5   过滤器大小是 3 * 3    步长 3 * 3   

输出图像的特征

input
     
     
     
     
     

 

      

过滤器
   
   
   

 

如果使用VALID的话  只能做一次卷积操作  下一次的时候会超过input的宽度  所以输出的是 1 * 1

 

 

SAME的话  就是为了解决剩下的两个格子不能使用的问题   会把input自动扩展 使其能够进行下一步扩展  2 * 2

 

 

OK代码是不会说谎的  用代码来证明我们的猜想

# -*- coding: utf-8 -*-
# @Time    : 2019/3/13 22:34
# @Author  : YYLin
# @Email   : 854280599@qq.com
# @File    : Tensorflow.py
import tensorflow as tf

# 定义一个tensorflow 变量
input = tf.Variable(tf.random_normal([10, 5, 5, 3]))

filter = tf.Variable(tf.random_normal([3, 3, 3, 5]))

# padding的取值是 VALID SAME
out_conv2d_VALID = tf.nn.conv2d(input, filter, strides=[1, 3, 3, 1], padding='VALID')

out_conv2d_SAME = tf.nn.conv2d(input, filter, strides=[1, 3, 3, 1], padding='SAME')

print("卷积神经网络之中使用VALID时数据的输出",out_conv2d_VALID)

print("卷积神经网络之中使用SAME时数据的输出",out_conv2d_SAME)

 

# 程序输出的结果是: 根据结果证明使用same的时候 语言有点匮乏  有没有人能总结一下

# 卷积神经网络之中使用VALID时数据的输出 Tensor("Conv2D:0", shape=(10, 1, 1, 5), dtype=float32)
# 卷积神经网络之中使用SAME时数据的输出 Tensor("Conv2D_1:0", shape=(10, 2, 2, 5), dtype=float32)

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值