首页 > 其他 > 详细

tf.nn.conv2d卷积函数

时间:2019-12-07 09:36:07      阅读:98      评论:0      收藏:0      [点我收藏+]
一.tensorflow中二维卷积函数的参数含义:
def conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1, 1], name=None)
卷积操作函数:
input:需要做卷积操作的图片;四维tensor张量,类型float32或float64;[batch,in_height,in_width,in_channels]形状(shape):batch训练时一个batch的图片数量,in_height图片高度,in_width图片宽度,in_channels图像通道数
filter:CNN中的卷积核(滤波器),四维tensor张张量,[filter_height,filter_width,in_channels,out_channels]形状(shape):卷积核高度,卷积核宽度,图像通道数,卷积核个数。
strides:卷积时图像每一维的步长。一维向量长度为4 如[1,1,1,1]
padding:决定是否补充0,SAME:填充到滤波器能够到达图像的边缘 VALID:边缘不填充
use_cudnn_on_gpu:bool类型,是否使用cudn加速,默认加速
返回值:featuremap特征图片(tensor张量)
input:输入的图片  如:[1,5,5,1]下图

技术分享图片

filter:卷积核或滤波器

技术分享图片 

strides:步长(注意:图像每一维的步长,input是思维tensor,strides=[1,1,1,1]表示每一维的步长)

技术分享图片

padding:padding=‘SAME’补0    当padding=‘VALID‘不补充0

技术分享图片

返回值:featuremap特征图片

技术分享图片

 二.卷积函数的简单实例

import tensorflow as tf
image = [0,1.0,1,2,2,0,1,1,0,0,1,1,0,1,0,1,0,1,1,1,0,2,0,1,0] ##注意:数据类型为float32或float64不能是int,其中需有一个1.0
input = tf.Variable(tf.constant(image,shape=[1,5,5,1]))  ###输入一个5*5的图像矩阵
fil1 = [-1.0,0,1,-2,0,2,-1,0,1]                          ##注意:数据类型为float32或float64不能是int,其中需有一个1.0
filter = tf.Variable(tf.constant(fil1,shape=[3,3,1,1]))  ###定义卷积核(滤波器)

op = tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding=SAME)  ##一个通道输入,输出一个featuremap

init = tf.global_variables_initializer()

with tf.Session() as  sess:
    sess.run(init)
    print(input:\n, sess.run(input))
    print(op:\n,sess.run(op))

##输出结果
‘‘‘
input:
 [[[[ 0.]
   [ 1.]
   [ 1.]
   [ 2.]
   [ 2.]]

  [[ 0.]
   [ 1.]
   [ 1.]
   [ 0.]
   [ 0.]]

  [[ 1.]
   [ 1.]
   [ 0.]
   [ 1.]
   [ 0.]]

  [[ 1.]
   [ 0.]
   [ 1.]
   [ 1.]
   [ 1.]]

  [[ 0.]
   [ 2.]
   [ 0.]
   [ 1.]
   [ 0.]]]]
op:
 [[[[ 3.]
   [ 3.]
   [ 1.]
   [ 1.]
   [-4.]]

  [[ 4.]
   [ 2.]
   [-1.]
   [-1.]
   [-3.]]

  [[ 3.]
   [-1.]
   [ 0.]
   [-1.]
   [-3.]]

  [[ 3.]
   [-1.]
   [ 1.]
   [ 0.]
   [-4.]]

  [[ 4.]
   [ 0.]
   [-1.]
   [ 0.]
   [-3.]]]]
‘‘‘

技术分享图片

结果一致:

总结:

1.数据类型 input 和 filter的数据类型都只能是float32 或 float64

2.strides步长:是指输入数据的每一个维度的步长,输入数据是4维tensor 所以步长[1,1,1,1](一维tensor,长度4)才是和图示步长一致。

 

 

 

 

 

tf.nn.conv2d卷积函数

原文:https://www.cnblogs.com/liuhuacai/p/12000329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!