1 Star 1 Fork 0

zhangxiaohuixuhao/pytorch_network

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
SqueezeNet.py 2.33 KB
一键复制 编辑 原始数据 按行查看 历史
hzhang 提交于 4年前 . 0628
import torch
import torch.nn as nn
import torchvision
class FireModule(nn.Module):
def __init__(self, in_channels, out_channels, mid_channels=None):
super(FireModule, self).__init__()
mid_channels = out_channels//4
self.squeeze = nn.Conv2d(in_channels=in_channels,out_channels=mid_channels,kernel_size=1,stride=1)
self.squeeze_relu = nn.ReLU6(inplace=True)
self.expand3x3 = nn.Conv2d(in_channels=mid_channels, out_channels=out_channels, kernel_size=3, stride=1,padding=1)
self.expand3x3_relu = nn.ReLU6(inplace=True)
self.expand1x1 = nn.Conv2d(in_channels=mid_channels, out_channels=out_channels, kernel_size=1, stride=1)
self.expand1x1_relu = nn.ReLU6(inplace=True)
def forward(self, x):
x = self.squeeze_relu(self.squeeze(x))
y = self.expand3x3_relu(self.expand3x3(x))
z = self.expand1x1_relu(self.expand1x1(x))
out = torch.cat([y, z],dim=1)
return out
class SqueezeNet(nn.Module):
def __init__(self, num_classes = 1000):
super(SqueezeNet, self).__init__()
self.bottleneck = nn.Sequential(
nn.Conv2d(in_channels=3, out_channels=96,kernel_size=7,stride=2,padding=3),
nn.BatchNorm2d(96),
nn.ReLU6(inplace=True),
nn.MaxPool2d(kernel_size=3,stride=2),
FireModule(in_channels=96, out_channels=64),
FireModule(in_channels=128, out_channels=64),
FireModule(in_channels=128, out_channels=128),
nn.MaxPool2d(kernel_size=3,stride=2),
FireModule(in_channels=256, out_channels=128),
FireModule(in_channels=256, out_channels=192),
FireModule(in_channels=384, out_channels=192),
FireModule(in_channels=384, out_channels=256),
nn.MaxPool2d(kernel_size=3, stride=2),
FireModule(in_channels=512, out_channels=256),
nn.Dropout(p=0.5),
nn.Conv2d(in_channels=512, out_channels=num_classes, kernel_size=1, stride=1),
nn.ReLU(inplace=True),
nn.AvgPool2d(kernel_size=13, stride=1),
)
def forward(self, x):
out = self.bottleneck(x)
return out.view(out.size(1),-1)
if __name__ == '__main__':
model = SqueezeNet()
print(model)
input = torch.rand(1,3,224,224)
out = model(input)
print(out.shape)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/zhangxiaohuixuhao/pytorch_network.git
git@gitee.com:zhangxiaohuixuhao/pytorch_network.git
zhangxiaohuixuhao
pytorch_network
pytorch_network
master

搜索帮助