53、实战 - 手写一个全连接算法

全连接算法在一定程度上和矩阵乘法算法等价,因此如果我们想实现一个全连接。的算法,只需要实现一个矩阵乘法就可以。。

矩阵乘法是线性代数运算,用于将两个矩阵相乘得到一个新的矩阵。要执行矩阵乘法,需要确保第一个矩阵的列数与第二个矩阵的行数相等。

比如第一个矩阵的维度为 m×k,第二个矩阵的维度为 k×n,则相乘得到的新矩阵的维度为 m×n。

通过上面的描述,我们可以看到矩阵乘法的乘累加维度,实际上是 k 那一维度,他通过将k 那一维的所有数据进行逐元素相乘,并且累加成一个值来完成特征的融合。

在 resnet50 神经网络中,最后一层全连接层的第一个矩阵的输入维度是:1 x 2048,第二个矩阵的输入维度是: 2048 x 1000,这样两个矩阵相乘的结果,输出维度变成了1×1000。

而这 1000 便代表了 ImageNet 数据集中的 1000 个分类。

矩阵乘法的实现

为了实现一个矩阵乘法,我们可以简单的采用堆叠循环的方式来完成。

实现思路大致为:在最外层分别循环 m 次和 n 次,最内层对 k 维度循环 k 次并进行乘累加操作。利用Python代码实现如下。

def FullyConnect(img, weight, bias):
  '''
  fc compute [2048] * [1000, 2048] = [1000]
  img : [1, 1, 2048] from last layer
  weight: need reshpe to [1000, 2048]
  bias: [1000]
  '''
  img_new = img.reshape(2048)
  weight_new = np.array(weight).reshape([1

相关推荐

  1. 53实战 - 一个连接算法

    2024-01-10 21:12:02       57 阅读
  2. 一个vuex?

    2024-01-10 21:12:02       56 阅读
  3. 62、python - 搭建 resnet50 神经网络

    2024-01-10 21:12:02       58 阅读

最近更新

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

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

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

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

    2024-01-10 21:12:02       96 阅读

热门阅读

  1. 深度解读:微信返利机器人是如何实现的?

    2024-01-10 21:12:02       62 阅读
  2. react useEffect

    2024-01-10 21:12:02       54 阅读
  3. 在 Docker 中配置 MySQL 数据库并初始化 Project 项目

    2024-01-10 21:12:02       51 阅读
  4. 盛京天海专升本咋样

    2024-01-10 21:12:02       55 阅读
  5. onreadystatechange事件详解

    2024-01-10 21:12:02       53 阅读
  6. RabbitMQ的关键概念解析

    2024-01-10 21:12:02       53 阅读
  7. 组件中使用定时器及销毁问题(vue的问题)

    2024-01-10 21:12:02       62 阅读
  8. 第九节 初始化项目

    2024-01-10 21:12:02       59 阅读
  9. 面试宝典之消息中间件面试题

    2024-01-10 21:12:02       58 阅读
  10. paddle指定运行gpu

    2024-01-10 21:12:02       60 阅读