【二】TensorFlow神经网络模型构建之卷积函数

卷积函数是构建神经网络的重要支架,是在一批图像上扫描的二维过滤器

  1. tf.nn.convolution(input,filter,padding,strides=None,dilation_rate=None,name=None,data_format=None)该函数计算N维卷积的和。
  2. tf.nn.conv2d(input,filter,padding,strides,use_cudnn_on_gpu=None,name=None,data_format=None)对一个维的输入数据input和维的卷积核filter进行操作,然后对输入数据进行一个二维的卷积操作,最后得到卷积之后的结果。函数参数说明:
python 复制代码
tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None) :
'''
input: 一个tensor,数据类型必须是float32或float64
filter: 一个tensor,数据类型必须与input相同
strides:一个长度是`4`的一维整数类型数组,每一维度对应的是input中每一维的对应`移动步数`
padding:一个字符串,取值为SAME或VALID。SAME仅适用于全尺寸操作,即输入数据维度和输出数据维度相同;VALID适用于部分窗口,即输入数据维度和输出数据维度不同
use_cudnn_on_gpu:一个可选布尔值,是否使用英伟达GPU,默认为True
name: 为该操作取个名字
'''

使用代码示例如下:

python 复制代码
import tensorflow as tf
import numpy as np
input_data=tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)
filter_data=tf.Variable(np.random.rand(2,2,3,2),dtype=np.float32)
y=tf.nn.conv2d(input_data,filter_data,strides=[1,1,1,1],padding='SAME')
  1. tf.nn.depthwise_conv2d(input,filter,strides,padding,rate=None,data_format=None)输入张量(input)的数据维度是[batch,in_height,in_width,in_channels],卷积核(filter)的维度是[filter_height,filter_width,in_channels,channel_multiplier],在通道in_channels上面的卷积深度是1,depthwise_conv2d函数将不同的卷积核独立地应用在in_channels的每个通道上(从通道1到通道channel_multiplier),然后把所有的结果进行汇总。最后输出通道的总数是 i n _ c h a n n e l s × c h a n n e l _ m u l t i p l i e r in\_channels \times channel\_multiplier in_channels×channel_multiplier,示例代码片段如下:
python 复制代码
import tensorflow as tf
import numpy as np
input_data=tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)
filter_data=tf.Variable(np.random.rand(2,2,3,5),dtype=np.float32)
y=tf.nn.depthwise_conv2d(input_data,filter_data,strides=[1,1,1,1],padding='SAME')
  1. tf.nn.separable_conv2d(input,depthwise_filter,pointwise_filter,strides,padding,rate=None,name=None,data_format=None)利用几个分离的卷积核去做卷积。在这个API中,将应用一个二维的卷积核,在每个通道上,以深度channel_multiplier进行卷积。部分参数说明:
python 复制代码
depthwise_filter: 一个tensor,数据维度是四维[filter_height,filter_width,in_channels,channel_multiplier],其中in_channels卷积深度是1。
pointwise_filter:一个tensor,数据维度是四维[1,1,channel_multiplier?in_channels,out_channels],其中pointwise_filter是在depthwise_filter卷积之后的混合卷积。

使用示例代码如下:

python 复制代码
import tensorflow as tf
import numpy as np
input_data=tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)
depthwise_filter=tf.Variable(np.random.rand(2,2,3,5),dtype=np.float32)
pointwise_filter=tf.Variable(np.random.rand(1,1,15,20),dtype=np.float32)
y=tf.nn.separable_conv2d(input_data,depthwise_filter,pointwise_filter,strides=[1,1,1,1],padding='SAME')
  1. tf.nn.atrous_conv2d(value,filter,rate,padding,name=None)计算Atrous卷积,又称卷积或者扩张卷积。使用示例:
python 复制代码
import tensorflow as tf
import numpy as np
input_data=tf.Variable(np.random.rand(1,5,5,1),dtype=np.float32)
filter_data=tf.Variable(np.random.rand(3,3,1,1),dtype=np.float32)
y=tf.nn.atrous_conv2d(input_data,filter_data,2,padding='SAME')
  1. tf.nn.conv2d_transpose(value,filter,output_shape,strides,padding='SAME',data_format='NHWC',name=None)在解卷积网络中有时称为反卷积,但实际是conv2d的转置,使用示例代码:
python 复制代码
import tensorflow as tf
input_data=tf.compat.v1.random_normal(shape=[1,3,3,1])
filter_data=tf.compat.v1.random_normal(shape=[2,2,3,1])
y=tf.nn.conv2d_transpose(input_data,filter_data,output_shape=[1,5,5,3],strides=[1,2,2,1],padding='SAME')
  1. tf.nn.conv1d(input,filter,strides,padding,data_format=None,name=None)该函数是用来计算给定三维的输入和过滤器的情况下的一维卷积,输入input是三维,如batch,in_width,in_channels,卷积核filters也是三维,如\[\]filter_width,in_channels,out_channels]。strides是一个整数,代表卷积核移动每一步的长度。

  2. tf.nn.conv3d(input,filter,strides,padding,name=None)该函数是用来计算给定五维的输入和过滤器的情况下的三维卷积,与二维卷积相比:

    • input 的shape中多一维in_depth,形状为Shapebatch,in_depth,in_height,in_width,in_channels
    • filter的shapt中多一维filter_depth,由filter_depth,filter_height,filter_width构成卷积核的大小。
    • strides中多一维变为strides_batch,strides_depth,strides_height,strides_width,strides_channel,必须保证strides0=strides4=1
  3. tf.nn.conv3d_transpose(input,filter,output_shape,strides,,padding='SAME',name=None)和二维反卷积(转置)类似。

相关推荐
触底反弹6 分钟前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
cd_949217219 分钟前
2026 AI Agent 落地指南:除了搭建工具,你还需要配套的搜索基础设施
人工智能
武子康11 分钟前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白13 分钟前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
麻雀飞吧1 小时前
最新量化学习路径,交易认知和技术实现要并行
人工智能·python
北辰alk1 小时前
我用Seed Evolving做了个“代码遗产抢救者”和“旅行规划师”——一个开发者的双面实战日记
人工智能
腾渊信息科技公司1 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
人间凡尔赛1 小时前
WAIC 2026 落幕,AI Agent 开发已进入 Harness 架构时代
人工智能·架构
-XWB-1 小时前
【LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(二)
人工智能·经验分享·aigc·学习方法·ai编程