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

上一节介绍了利用 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 

你可能感兴趣的:(CV视觉算法入门与调优,python,开发语言)