60、resnet50 权值和参数加载

上一节我们将 resnet50 中需要下载的权值,以及每层卷积的参数,都下载并且保存到了 仓库 resnet50_weight 目录,在仓库的这个连接。

在将权值保存好之后,接下来就是要看如何使用这些权值,也就是如何加载。本节就介绍下我们实战过程中,如何加载这些权值。

加载权值

加载权值的目的,是为了使网络运行到某一层时,可以方便的将权值与输入特征图直接进行计算,比如卷积输入的特征图和本层的权值直接进行卷积运算。

在实际网络部署时,也是类似的流程。下面简单介绍下部署过程中,权值加载的流程。

假设我们在 GPU 或者其他硬件平台上部署网络,通常的做法便是将网络中所有的权值加载到内存中,在 GPU 上对应为加载到显存中,也就是 GPU 的 DDR 上。

一般GPU 的 DDR 有几 GB 甚至十几 GB 的容量,对于大部分的神经网络而言,是可以依次将全部权值加载到显存上的。

在实际运行神经网络时,假设使用 GPU 运行到某一层卷积时,对应执行卷积的指令会从 DDR 上将权值进一步加载到更靠近计算部件的“内存”上,一般为 Shared Memory,或者 GPU 的片上内存。这是因为 GPU 的存储器是分层级的。

在我们这个实战中,没有 GPU 这么复杂的架构设计,我们全部在 CPU 上执行,因此我们默认只有一个内存用于权值加载,也就是我们电脑主机的内存。

其实不同的硬件架构内存划分也是不一样的&#x

你可能感兴趣的:(CV视觉算法入门与调优,机器学习,人工智能,深度学习,算法,神经网络)