69、python - 利用向量内积来优化卷积运算

发布时间:2024年01月12日

上一节介绍了利用 python 实现的原始卷积版本性能很差的原因,不知道各位同学有尝试的么?

这一节介绍下如何对卷积的乘累加进行一次优化:我们利用 np.dot 来进行优化。

np.dot

np.dot 是 numpy 库提供的一个函数,用来计算两个向量的点积,或者叫内积。那什么是内积呢?

假设有两个向量:

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
dot_product = np.dot(a, b)

np.dot 计算的就是"1*4 + 2*5 + 3*6", 这不就是卷积运算 channel 维度的乘累加操作吗?

因此,我们仅仅需要将最原始卷积中的乘累加操作,利用 np.dot 来替代,便可以完成一次最基础,但是效果很好的优化。

而且几乎可以提升数百倍的性能,当然你也可以把 np.dot 拿来优化全连接的运算,因为全连接运算本质上也是一种乘累加运算。

为什么 np.dot 可以提升性能?

首先,numpy 作为一个广泛使用的科学计算库,它是提供了大量的数学运算函数的,可以进行很多矩阵运算,并且高性能也是它的一个特性之一。

np.dot 函数之所以具有高性能,得益于以下几点:

  1. 底层实现:numpy 的核心算法是用 C 语言编写的,我们知道 C 语言是一种更加接近底层的语言,执行速度非常快。

    调用 np.dot 

文章来源:https://blog.csdn.net/dongtuoc/article/details/135563505
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。