激活函数(ReLU):nn.ReLU(inplace=True)

nn.ReLU(inplace=True)

参数inplace=True:
inplace为True,将会改变输入的数据 ,否则不会改变原输入,只会产生新的输出
inplace:can optionally do the operation in-place. Default: False
注: 产生的计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。

例子:
import torch
import torch.nn as nn

input = torch.randn(5)
print('输入处理前:\n', input, input.size())
print('*'*70)

print("Default. inplace=False:")
output_F = nn.ReLU(inplace=False)(input)
print('输入:\n', input, input.size())
print('输出:\n', output_F, output_F.size())

print('*'*70)

print("inplace=True:")
output_T = nn.ReLU(inplace=True)(input)
print('输入:\n', input, input.size())
print('输出:\n', output_T, output_T.size())
运行结果:

输入处理前:
 tensor([-2.2577,  0.1088, -0.9960,  0.4097, -0.3411]) torch.Size([5])
**********************************************************************
Default. inplace=False:
输入:
 tensor([-2.2577,  0.1088, -0.9960,  0.4097, -0.3411]) torch.Size([5])
输出:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])
**********************************************************************
inplace=True:
输入:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])
输出:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])
定义类 AlexNet,继承 nn.Module 类: 定义 __init__ 方法,传入参数 self 和 num_classes=3: 调用父类 nn.Module 的 __init__ 方法: 定义属性 features,值为 nn.Sequential 实例,包含以下层: 卷积层 nn.Conv2d,输入通道数为 3,输出通道数为 64,核大小为 11,步长为 4,填充为 2 激活函数nn.ReLUinplace 参数为 True 最大池化层 nn.MaxPool2d,核大小为 3,步长为 2 卷积层 nn.Conv2d,输入通道数为 64,输出通道数为 192,核大小为 5,填充为 2 激活函数nn.ReLUinplace 参数为 True 最大池化层 nn.MaxPool2d,核大小为 3,步长为 2 卷积层 nn.Conv2d,输入通道数为 192,输出通道数为 384,核大小为 3,填充为 1 激活函数nn.ReLUinplace 参数为 True 卷积层 nn.Conv2d,输入通道数为 384,输出通道数为 256,核大小为 3,填充为 1 激活函数nn.ReLUinplace 参数为 True 卷积层 nn.Conv2d,输入通道数为 256,输出通道数为 256,核大小为 3,填充为 1 激活函数nn.ReLUinplace 参数为 True 最大池化层 nn.MaxPool2d,核大小为 3,步长为 2 定义属性 avgpool,值为 nn.AdaptiveAvgPool2d 实例,输出大小为 (6, 6) 定义属性 classifier,值为 nn.Sequential 实例,包含以下层: Dropout 层 nn.Dropout 全连接层 nn.Linear,输入大小为 256 * 6 * 6,输出大小为 4096 激活函数nn.ReLUinplace 参数为 True Dropout 层 nn.Dropout 全连接层 nn.Linear,输入大小为 4096,输出大小为 4096 激活函数nn.ReLUinplace 参数为 True 全连接层 nn.Linear,输入大小为 4096,输出大小为 num_classes 定义 forward 方法,传入参数 self 和 x: x = self.features(x) x = self.avgpool(x) x = torch.flatten(x, 1) x = self.classifier(x) 返回 x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值