本文主要是介绍59、resnet50 权值和参数保存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上一节我们下载好了模型,这一节开始将模型中存在权值的层的权值参数抽取出来,以文件(txt后缀的文本文件)的形式保存在本地电脑上,方便后续推理使用。
按照之前介绍算法时所说的,在 resnet50 中,存在权值的层有卷积层(权值为卷积核)、bn层(权值为gamma 和 bias),全连接层(权值为矩阵)
同时,我们把所有卷积层中的参数(padding,stride,kernel_size等)同样保存下来,也是为了方便在推理到这一层时直接使用。当然参数也可以不用保存起来,因为模型结构是确定的,推理到某一层的时候参数也是确定的,可以提前写好(这一点,在最后性能优化codegen模块时会看到)。
我们暂时还是将卷积层的参数以文件的形式保存在本地电脑中。
如何保存模型的权值
我们采用最朴素的方法来保存权值。
-
所有的权值和卷积的参数都保存在仓库 resnet50_weight 目录下。
-
通过 np.savetxt 接口,将需要保存的数据保存在 txt 文本中。
卷积参数的保存
需要保存的包括卷积核尺寸、stride参数、padding参数、输入输出通道数,这些参数通过每层卷积的属性获取到。
保存卷积参数的核心函数在下面,可以看函数前的注释说明,链接:
这篇关于59、resnet50 权值和参数保存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!