代码学习2022.12

文章详细介绍了LogSoftmax与Softmax的区别,LogSoftmax是Softmax的对数形式,输出为负数。还讨论了位移运算符>>>和<<在处理网络结构尺寸变化中的应用。此外,提到了如何将numpy数组转换为字典以及Python类中的__call__方法,使得类实例可以像函数一样被调用。
摘要由CSDN通过智能技术生成

1. nn.LogSoftmax与nn.Softmax

  • 区别
    nn.Softmax输出的公式如下:
    在这里插入图片描述
    其确保所有概率加和为1,因此softmax输出值在(0,1)间。
    nn.LogSoftmax输出的公式如下:
    在这里插入图片描述
    由于将原softmax的输出加了log,因此最终一定为负数。
  • 使用方法
    output = torch.arange(1,7).reshape((2,3)).float() # tensor([[1., 2., 3.],[4., 5., 6.]])
    log_softmax =nn.LogSoftmax(dim=?) #沿着dim方向计算,0竖着,1横着
    log_softmax(output)# tensor([[-2.4076, -1.4076, -0.4076], [-2.4076, -1.4076, -0.4076]])

2. 移位运算符>>和<<

a = 2 
print(a << 3)  # 相当于a 乘 2的3次方
a = 32 
print(a >> 3)  # 相当于a 除 2的3次方

在网络构建时,进行了x次核为2的maxpooling,就可以在构建全连接层时使用(宽度>>x)来确定尺寸。

3. 将numpy array转换为词典

若将参数行保存为npy,又以xxx = np.load('xxxx.npy', allow_pickle=True)导入,则需要使用
xxx = dict(enumerate(xxx.flatten(), 1))[0]
将xxx转换为dict词典

4. def call

如果Python3类中有__call__方法,那么此类实例的行为类似于函数并且可以像函数一样被调用。当实例作为函数被调用时,如果定义了此方法,则x(arg1, arg2, …)是x.call(arg1, arg2, …)的简写。
为了将一个类实例当作函数调用,我们需要在类中实现__call__()方法。该方法的功能类似于在类中重载()运算符,使得类实例对象可以像调用普通函数那样,以”对象名()”的形式使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值