pytorch系列 ---9的番外, Xavier和kaiming是如何fan_in和fan_out的,_calculate_fan_in_and_fan_out解读 Conv2d

本文详细介绍了如何在PyTorch中计算线性层(Linear)和卷积层(Conv2d)的fan_in和fan_out。通过代码示例,解释了当权重张量维度为2时,对应线性层的fan_in等于输入通道数,fan_out等于输出通道数;而在卷积层中,fan_in和fan_out涉及卷积核大小,并通过计算权重张量特定维度的元素数量来确定。
摘要由CSDN通过智能技术生成

本文主要借助代码讲解Xavier和kaiming是如何借助_calculate_fan_in_and_fan_out函数来计算当前网络层的fan_in(输入神经元个数)和fan_out(输出神经元个数的),先针对Linear和Conv2d两种。

在这里插入图片描述

m_c = nn.Conv2d(16, 33, 3, stride=2)
m_l = nn.Linear(1, 10)
m_c.weight.size()
m_l.weight.size()

out:

torch.Size([33, 16, 3, 3])
torch.Size([10, 1])

注意看Linear weight的维度为2,而Conv2d的维度为4.
首先判断tensor的维度,如果是二维,则是Linear,

if dimensions == 2:  # Linear
        fan_in = tensor.size(1)
        fan_out = tensor.size(0)

此时: f a n _ i n = i n _ c h a n n e l s fan\_in = in\_channels fan_in=in_channels
f a n _ o u t = o u t _ c h a n n e l s fan\_out = out\_channels fan_out=o

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值