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 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 02:10:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 02:10:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 02:10:05       87 阅读
  4. Python语言-面向对象

    2024-01-13 02:10:05       96 阅读

热门阅读

  1. 如何解决TCP拥塞问题?

    2024-01-13 02:10:05       62 阅读
  2. LeetCode878. Nth Magical Number

    2024-01-13 02:10:05       53 阅读
  3. vue3中el-table实现表格合计行

    2024-01-13 02:10:05       66 阅读
  4. [ECE]1.3 Basic logic operations

    2024-01-13 02:10:05       48 阅读
  5. 3 微信小程序

    2024-01-13 02:10:05       51 阅读
  6. 面试题-回溯算法解法模板

    2024-01-13 02:10:05       55 阅读
  7. 数据库面经---10则

    2024-01-13 02:10:05       61 阅读