温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

pytorch如何求网络模型参数

发布时间:2021-08-25 09:15:16 来源:亿速云 阅读:212 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关pytorch如何求网络模型参数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一 .求得每一层的模型参数,然后自然的可以计算出总的参数。

1.先初始化一个网络模型model

比如我这里是 model=cliqueNet(里面是些初始化的参数)

2.调用model的Parameters类获取参数列表

pytorch如何求网络模型参数

一个典型的操作就是将参数列表传入优化器里。如下

 optimizer = optim.Adam(model.parameters(), lr=opt.lr)

言归正传,继续回到参数里面,参数在网络里面就是variable,下面分别求每层的尺寸大小和个数。

函数get_number_of_param( ) 里面的参数就是刚才第一步初始化的model

def get_number_of_param(model):   """get the number of param for every element"""   count = 0   for param in model.parameters():     param_size = param.size()     count_of_one_param = 1     for dis in param_size:       count_of_one_param *= dis     print(param.size(), count_of_one_param)     count += count_of_one_param     print(count)   print('total number of the model is %d'%count)

再来看看结果:

torch.Size([64, 1, 3, 3]) 576 576 torch.Size([64]) 64 640 torch.Size([6, 36, 64, 3, 3]) 124416 125056 torch.Size([30, 36, 36, 3, 3]) 349920 474976 torch.Size([12, 36]) 432 475408 torch.Size([6, 36, 216, 3, 3]) 419904 895312 torch.Size([30, 36, 36, 3, 3]) 349920 1245232 torch.Size([12, 36]) 432 1245664 torch.Size([6, 36, 216, 3, 3]) 419904 1665568 torch.Size([30, 36, 36, 3, 3]) 349920 2015488 torch.Size([12, 36]) 432 2015920 torch.Size([6, 36, 216, 3, 3]) 419904 2435824 torch.Size([30, 36, 36, 3, 3]) 349920 2785744 torch.Size([12, 36]) 432 2786176 torch.Size([216, 216, 1, 1]) 46656 2832832 torch.Size([216]) 216 2833048 torch.Size([108, 216]) 23328 2856376 torch.Size([108]) 108 2856484 torch.Size([216, 108]) 23328 2879812 torch.Size([216]) 216 2880028 torch.Size([216, 216, 1, 1]) 46656 2926684 torch.Size([216]) 216 2926900 torch.Size([108, 216]) 23328 2950228 torch.Size([108]) 108 2950336 torch.Size([216, 108]) 23328 2973664 torch.Size([216]) 216 2973880 torch.Size([216, 216, 1, 1]) 46656 3020536 torch.Size([216]) 216 3020752 torch.Size([108, 216]) 23328 3044080 torch.Size([108]) 108 3044188 torch.Size([216, 108]) 23328 3067516 torch.Size([216]) 216 3067732 torch.Size([140, 280, 1, 1]) 39200 3106932 torch.Size([140]) 140 3107072 torch.Size([216, 432, 1, 1]) 93312 3200384 torch.Size([216]) 216 3200600 torch.Size([216, 432, 1, 1]) 93312 3293912 torch.Size([216]) 216 3294128 torch.Size([9, 572, 3, 3]) 46332 3340460 torch.Size([9]) 9 3340469 total number of the model is 3340469

可以通过计算验证一下,发现参数与网络是一致的。

二:一行代码就可以搞定参数总个数问题

2.1 先来看看torch.tensor.numel( )这个函数的功能就是求tensor中的元素个数,在网络里面每层参数就是多维数组组成的tensor。

实际上就是求多维数组的元素个数。看代码。

print('cliqueNet parameters:', sum(param.numel() for param in model.parameters()))

当然上面代码中的model还是上面初始化的网络模型。

看看两种的计算结果

torch.Size([64, 1, 3, 3]) 576 576 torch.Size([64]) 64 640 torch.Size([6, 36, 64, 3, 3]) 124416 125056 torch.Size([30, 36, 36, 3, 3]) 349920 474976 torch.Size([12, 36]) 432 475408 torch.Size([6, 36, 216, 3, 3]) 419904 895312 torch.Size([30, 36, 36, 3, 3]) 349920 1245232 torch.Size([12, 36]) 432 1245664 torch.Size([6, 36, 216, 3, 3]) 419904 1665568 torch.Size([30, 36, 36, 3, 3]) 349920 2015488 torch.Size([12, 36]) 432 2015920 torch.Size([6, 36, 216, 3, 3]) 419904 2435824 torch.Size([30, 36, 36, 3, 3]) 349920 2785744 torch.Size([12, 36]) 432 2786176 torch.Size([216, 216, 1, 1]) 46656 2832832 torch.Size([216]) 216 2833048 torch.Size([108, 216]) 23328 2856376 torch.Size([108]) 108 2856484 torch.Size([216, 108]) 23328 2879812 torch.Size([216]) 216 2880028 torch.Size([216, 216, 1, 1]) 46656 2926684 torch.Size([216]) 216 2926900 torch.Size([108, 216]) 23328 2950228 torch.Size([108]) 108 2950336 torch.Size([216, 108]) 23328 2973664 torch.Size([216]) 216 2973880 torch.Size([216, 216, 1, 1]) 46656 3020536 torch.Size([216]) 216 3020752 torch.Size([108, 216]) 23328 3044080 torch.Size([108]) 108 3044188 torch.Size([216, 108]) 23328 3067516 torch.Size([216]) 216 3067732 torch.Size([140, 280, 1, 1]) 39200 3106932 torch.Size([140]) 140 3107072 torch.Size([216, 432, 1, 1]) 93312 3200384 torch.Size([216]) 216 3200600 torch.Size([216, 432, 1, 1]) 93312 3293912 torch.Size([216]) 216 3294128 torch.Size([9, 572, 3, 3]) 46332 3340460 torch.Size([9]) 9 3340469 total number of the model is 3340469 cliqueNet parameters: 3340469

可以看出两种计算出来的是一模一样的。

感谢各位的阅读!关于“pytorch如何求网络模型参数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI