iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python卷积函数怎么使用
  • 605
分享到

Python卷积函数怎么使用

Python 2023-05-20 21:05:12 605人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

卷积函数python提供了多种卷积方案,相比之下,定义在ndimage中的卷积函数,在功能上比numpy和signal中的卷积要稍微复杂一些,这点仅从输入参数的多少就可略窥一二numpy.convolve(a, v, mode='f

卷积函数

python提供了多种卷积方案,相比之下,定义在ndimage中的卷积函数,在功能上比numpysignal中的卷积要稍微复杂一些,这点仅从输入参数的多少就可略窥一二

numpy.convolve(a, v, mode='full')
scipy.ndimage.convolve1d(input, weights, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)

scipy.signal.convolve(in1, in2, mode='full', method='auto')
scipy.ndimage.convolve(input, weights, output=None, mode='reflect', cval=0.0, origin=0)

前两者为1维卷积函数,且ndimage可对多维数组沿着单个坐标轴进行卷积操作,后两者为多维卷积。

numpy和signal中的卷积函数,其mode都有三种,用以调节卷积后的边缘特性,如果输入的两个卷积对象的维度分别是N NN和M MM,则这三种模式的输出结果为

  • full: 输出维度N + M − 1 N+M-1N+M−1,其最后一点的信号完全不交叠,故而边缘效应明显。

  • same:输出维度max ⁡ ( M , N ) \max(M,N)max(M,N),边缘效应仍然可见

  • valid:输出维度∣ M − N ∣ |M-N|∣M−N∣,只返回完全交叠的区域,相当于把存在边缘效应的点都率除掉了

ndimage中的convolve针对边缘效应,对图像进行扩展,而其mode决定的就是扩展之后的填充格式,设待滤波数组为a b c d,则在不同的模式下,对边缘进行如下填充


左侧填充数据右侧填充
reflectd c b aa b c dd c b a
constantk k k ka b c dk k k k
nearesta a a aa b c dd d d d
mirrord c ba b c dc b a
wrapa b c da b c da b c d

其中,k通过参数cval设定。

这五种修改边界的方法,在scipy.ndimage的函数中十分普遍,尤其是涉及到卷积的滤波函数,堪称标配。

对比测试

接下来针对这些不同的卷积函数,做一下性能测试,用5 × 5的卷积模板,对1000 × 1000的矩阵进行卷积计算,来看一下不同实现方案的卷积,其速度如何

import numpy as np
import scipy.signal as ss
import scipy.ndimage as sn
from timeit import timeit


A = np.random.rand(1000,1000)
B = np.random.rand(5,5)

timeit(lambda : ss.convolve(A, B), number=10)
# 0.418
timeit(lambda : sn.convolve(A, B), number=10)
# 0.126

相比之下,ndimage中的卷积显然是更高效的。

接下来测试一下一维卷积的表现

A = np.random.rand(10000)
B = np.random.rand(15)

timeit(lambda : np.convolve(A, B), number=1000)
# 0.15256029999727616
timeit(lambda : ss.convolve(A, B), number=1000)
# 0.1231262000001152
timeit(lambda : sn.convolve(A, B), number=1000)
# 0.09218210000108229
timeit(lambda : sn.convolve1d(A, B), number=1000)
# 0.03915820000111125

相比之下,convolve1d不愧是写明了1d的卷积函数,速度最快,而numpy中提供的函数速度最慢。

卷积应用

卷积操作经常被作用在图像滤波以及边缘提取上,例如,通过类似下面这样的矩阵,可以将图像的纵向的边缘提取出来。

Python卷积函数怎么使用

下面做一个简单的测试

from scipy.misc import ascent
import matplotlib.pyplot as plt
img = ascent()
temp = np.zeros([3,3])
temp[:,0] = -1
temp[:,2] = 1

edge = sn.convolve(img, temp)

fig = plt.figure()
ax = fig.add_subplot(121)
ax.imshow(img)
ax = fig.add_subplot(122)
ax.imshow(edge)
plt.show()

以上就是Python卷积函数怎么使用的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Python卷积函数怎么使用

本文链接: https://www.lsjlt.com/news/214918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python卷积函数怎么使用
    卷积函数python提供了多种卷积方案,相比之下,定义在ndimage中的卷积函数,在功能上比numpy和signal中的卷积要稍微复杂一些,这点仅从输入参数的多少就可略窥一二numpy.convolve(a, v, mode='f...
    99+
    2023-05-20
    Python
  • python图像卷积用什么函数
    python中使用numpy函数实现图像卷积,具体方法如下:import numpy as np #导入numpy模块img=np.array([[1,1,1,0,0],[0,1,1,1,0],[0,0,1,1,1],[0,0,1,1,0]...
    99+
    2024-04-02
  • CNN卷积函数Conv2D()各参数怎么使用
    本篇内容主要讲解“CNN卷积函数Conv2D()各参数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CNN卷积函数Conv2D()各参数怎么使用”吧!首先我们放出tf2.0关于tf.ke...
    99+
    2023-07-05
  • 关于Python卷积函数详解
    目录卷积函数对比测试卷积应用卷积函数 python提供了多种卷积方案,相比之下,定义在ndimage中的卷积函数,在功能上比numpy和signal中的卷积要稍微复杂一些,这点仅从输...
    99+
    2023-05-16
    Python卷积函数 Python卷积 Python关于卷积
  • keras中卷积层Conv2D怎么使用
    本篇内容介绍了“keras中卷积层Conv2D怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!keras中卷积层Conv2D的学习ke...
    99+
    2023-07-05
  • python怎么用函数算体积
    python使用integrate函数计算球体体积,具体方法如下:from scipy import integrateimport numpy as npimport timestart=time.clock()def half_circ...
    99+
    2024-04-02
  • OpenCV图像卷积之cv.filter2D()函数详解
    目录APIC++Python函数详解HelloWorld参数详解srcddepthkernel & anchordeltaborderType扩展——...
    99+
    2024-04-02
  • CNN卷积函数Conv2D()各参数的含义及用法解读
    目录1.函数的位置参数filters2.函数的第二个位置参数 kernel_size3.关键字参数strides=(1, 1),滑动步长4.关键字参数padding = &ldquo...
    99+
    2023-02-21
    CNN卷积函数Conv2D() CNN卷积函数 Conv2D()参数的含义
  • python求积函数是什么
    python中使用reduce函数求积,具体方法如下:reduce():reduce()函数的作用是对参数序列中元素进行累积。reduce()函数语法:reduce(function, iterable[, initializer])参数:...
    99+
    2024-04-02
  • python怎么在二维图像上进行卷积
    这篇文章将为大家详细讲解有关python怎么在二维图像上进行卷积,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、说明对于二维矩阵,卷积时卷积核由左向右、由上向下滑动,对应位置要求加权和。一般图片为RGB...
    99+
    2023-06-15
  • keras怎么自定义卷积层
    要自定义卷积层,可以使用Keras的Lambda层来实现。Lambda层允许我们定义任意的自定义函数,这样就可以实现自定义卷积操作。...
    99+
    2024-04-02
  • pytorch反卷积怎么控制大小
    在PyTorch中,可以通过调整反卷积层的参数来控制输出的大小。具体来说,可以通过设置输出大小、卷积核大小、步幅(stride)和填...
    99+
    2024-04-02
  • 怎么用TensorFlow实现卷积神经网络
    这篇文章主要介绍“怎么用TensorFlow实现卷积神经网络”,在日常操作中,相信很多人在怎么用TensorFlow实现卷积神经网络问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用TensorFlow实现...
    99+
    2023-06-25
  • python:使用卷积神经网络(CNN)进行回归预测
    作者:CSDN @ _养乐多_ 本文详细记录了从Excel或者csv中读取用于训练卷积神经网络(CNN)模型的数据,包括多个自变量和1个因变量数据,以供卷积神经网络模型的训练。随后,我们将测试数据集应...
    99+
    2023-10-26
    python cnn 回归
  • Docker数据卷怎么使用
    本文小编为大家详细介绍“Docker数据卷怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Docker数据卷怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一,数据卷的使用有时候需要使用数据库,但是...
    99+
    2023-06-27
  • Keras中如何使用卷积神经网络
    使用卷积神经网络(CNN)在Keras中非常简单。以下是一个简单的例子,演示如何构建一个简单的CNN模型: from keras.m...
    99+
    2024-04-02
  • python求积内置函数是什么
    python中求积的内置函数是reduce()函数语法:reduce(function, iterable[, initializer])注:function:函数,有两个参数;iterable:可迭代对象;initializer:可选,初...
    99+
    2024-04-02
  • Pytorch:Conv2d卷积前后尺寸怎么设置
    本篇内容主要讲解“Pytorch:Conv2d卷积前后尺寸怎么设置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pytorch:Conv2d卷积前后尺寸怎么设置”吧!Pytorch:Conv2d...
    99+
    2023-07-05
  • keras怎么搭建卷积神经网络
    在Keras中搭建卷积神经网络(CNN)可以通过Sequential模型或Functional API来实现。下面分别介绍这两种方法...
    99+
    2024-04-02
  • pytorch怎么搭建卷积神经网络
    在PyTorch中搭建卷积神经网络(Convolutional Neural Network,CNN)通常需要使用torch.nn模...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作