python中的一维卷积conv1d和二维卷积conv2d

python中的⼀维卷积conv1d和⼆维卷积conv2d
先来看⼆维卷积conv2d
conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1, 1], name=None)
"""Computes a 2-D convolution given 4-D `input` and `filter` tensors."""
给定4维的输⼊张量和滤波器张量来进⾏2维的卷积计算。
input:4维张量,形状:[batch, in_height, in_width, in_channels]
filter:滤波器(卷积核),4维张量,形状:[filter_height, filter_width, in_channels, out_channels]
strides:滤波器滑动窗⼝在input的每⼀维度上,每次要滑动的步长,是⼀个长度为4的⼀维张量。
return:该函数返回⼀个张量,其类型与input输⼊张量相同。
再看⼀维卷积conv1d,python中的⼀维卷积最终还是通过⼆维卷积实现的,先将输⼊张量和滤波器的维度扩展,再调⽤⼆维卷积conv2d 来实现。
def conv1d(value,filters, stride, padding, use_cudnn_on_gpu=None, data_format=None, name=None) """Computes a 1-D convolution given 3-D input and filter tensors."""
给定三维的输⼊张量和滤波器来进⾏1维卷积计算。
input:3维张量,形状shape和data_format有关:
(1)data_format = "NWC", shape = [batch, in_width, in_channels]
(2)data_format = "NCW", shape = [batch, in_channels, in_width]
filters:3维张量,shape = [filter_width, in_channels, out_channels],
stride:滤波器窗⼝移动的步长,为⼀个整数。
padding:与上⽂⼀致。
由conv1d源码可以看出,⼀维卷积的实现,是先对输⼊张量和filter扩展了⼀维,然后调⽤⼆维卷积进⾏运算的:
value = pand_dims(value, spatial_start_dim)  # 输⼊张量高清中国viad>惜春小札
filters = pand_dims(filters, 0)  # 滤波器
result = gen_v2d(
value,
filters,
strides,
padding,
use_cudnn_on_gpu=use_cudnn_on_gpu,
data_format=data_format)
return array_ops.squeeze(result, [spatial_start_dim])
下⾯为conv1d完整源码:
def conv1d(value,
rrkkk
filters,
stride,山西太原重型机器厂
padding,
use_cudnn_on_gpu=None,
data_format=None,
name=None):
with ops.name_scope(name, "conv1d", [value, filters]) as name:收容教养制度退出历史舞台
# Reshape the input tensor to [batch, 1, in_width, in_channels]
if data_format is None or data_format == "NHWC" or data_format == "NWC":      data_format = "NHWC"
spatial_start_dim = 1
strides = [1, 1, stride, 1]
elif data_format == "NCHW" or data_format == "NCW":
data_format = "NCHW"
spatial_start_dim = 2
strides = [1, 1, 1, stride]
else:
raise ValueError("data_format must be \"NWC\" or \"NCW\".")
value = pand_dims(value, spatial_start_dim)
第三种温暖filters = pand_dims(filters, 0)
result = gen_v2d(
value,
filters,
strides,
padding,
use_cudnn_on_gpu=use_cudnn_on_gpu,
data_format=data_format)
return array_ops.squeeze(result, [spatial_start_dim])

本文发布于:2024-09-22 04:01:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/531280.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:常用矢量公式
标签:卷积   步长   再调
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议