pytorch快速入门(十)cifar-10模型结构可视化
前言
框架环境:pycharm;使用pytorch环境,请自行配置 可视化工具:tensorboard 有不懂的可翻阅pytorch快速入门之前的笔记
pycharm相关快捷键 ctrl+/ 注释 Ctrl+P 查看参数,如下,光标移动至想要查看的函数,然后按下快捷键
CIFAR-10 Model Structure
下图是cifar-10模型结构
代码
import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.tensorboard import SummaryWriter
#构建模型
class Classification_network(nn.Module):
def __init__(self):
super(Classification_network, self).__init__()
#注1>>>>第一个卷积层,计算出stride=1,padding=2
# self.conv1 = Conv2d(3,32,5,stride=1,padding=2) #in_channel=3,out_channel=32,kernel=5
# #最大池化
# self.maxpool1 = MaxPool2d(2)
# # 第二个卷积层,计算方法同上stride=1,padding=2
# self.conv2 = Conv2d(32,32,5,padding=2)#in_channel=32,out_channel=32,kernel=5
# # 最大池化
# self.maxpool2 = MaxPool2d(2)
# # 第三个卷积层,计算方法同上stride=1,padding=2
# self.conv3 =Conv2d(32,64,5,padding=2)#in_channel=32,out_channel=64,kernel=5
# # 最大池化
# self.maxpool3 = MaxPool2d(2)
# #拉伸
# self.flatten = Flatten()
# #线性层
# self.linear1 = Linear(1024,64)
# self.linear2 = Linear(64, 10)
#sequential可以替代前面备注掉的代码段
self.model1 = Sequential(
Conv2d(3, 32, 5, stride=1, padding=2),
MaxPool2d(2),
Conv2d(32, 32, 5, padding=2),
MaxPool2d(2),
Conv2d(32, 64, 5, padding=2),
MaxPool2d(2),
Flatten(),
Linear(1024, 64),
Linear(64, 10)
)
def forward(self, x):
# x = self.conv1(x)
# x = self.maxpool1(x)
# x = self.conv2(x)
# x = self.maxpool2(x)
# x = self.conv3(x)
# x = self.maxpool3(x)
# x = self.flatten(x)
# x = self.linear1(x)
# y = self.linear2(x)
# return y
#代替以上代码段
y = self.model1(x)
return y
task = Classification_network()
print(task)
input = torch.ones((64, 3, 32, 32))
output = task(input)
print(output.shape)
#tensorboard可视化
writer = SummaryWriter(log_dir="E:/PycharmProjects/runs/flower_experiment")
writer.add_graph(task, input)
writer.close()
代码解释
注1: 计算公式如下(在pytorch官方文档中可查) 代入公式计算: 其中dilation取默认值1 自己推一推,就是枚举法试试。stride只能等于1,不然padding值太大,不合理。 解得padding=2,stride=1.
运行结果
右键–>run
tensorboard可视化
tensorboard详细教程 在terminal中输入
tensorboard --logdir="E:/PycharmProjects/runs/flower_experiment"
回车后点击蓝色链接即可显示 网页显示结果
双击可查看内部结构
上一篇:
JS实现多线程数据分片下载
