torch.topk

功能:找出前k大的数据,及其索引号

  • input:张量
  • k:决定选取k个值,k=1是为top-1
  • dim:索引维度

    返回:
  • Tensor:前k大的值
  • LongTensor:前k大的值所在的位置
torch.topk(input, k, dim=None,largest=True,sorted=True,out=None )

torchvision.utils.make_grid

功能:制作网格图像

  • tensor:图像数据,BCHW形式
  • nrow:行数(列数自动计算)
  • padding:图像间距(像素单位)
  • normalize:是否将像素值标准化
  • range:标准化范围
  • scale_each:是否单张图维度标准化
  • pad_value:padding的像素值
make_grid(tensor, nrow=8, padding=2, normalize=False,range=None,scale_each=False, pad_value=0)

代码结构

  1. 加载图片
  2. 加载模型
  3. 模型推理
  4. 获取类别 topk -> index -> names
  5. 分类结果可视化

注意事项

  1. 模型接收4d张量
  2. 弃用LRN(LRN用处不大)
  3. 增加了一个trick增加AdaptiveAvgPool2d,使图片无论多大分辨率,到达该层输出都是6*6,后面接的FC层,即将不匹配的Tensor都池化为6*6的,接入fc层进行classifier。
  4. 卷积核数量有所改变(pytorch中没有完全按照paper中去设置)

采用norm_mean=[0.485,0.456,0.406]

norm_std=[0.229,0.224,0.225]

这两个是通过Image数据集统计的均值和标准差,但是后面用BatchNormalization就可以不用这个。

transforms.ToTensor()区间是[0,1]

img_tensor.unsqueeze_(0) #chw->bchw

with torch.no_grad():

默认情况下会记录grad,如果只是test情况下不需要做反向传播,就可以用torch.no_grad()只做前向传播省时间。

log_interval,多少个epoch打印信息

val_interval,多少个epoch执行验证集

lr_decay_step=1,学习率多少个epoch改变

transforms.Resize((256))只是短边截为256,长边成比例缩短。

transforms.Resize((256,256))是正方形

# ============================ step 4/5 优化器 ============================
# 冻结卷积层
flag = 0
# flag = 1
if flag:
fc_params_id = list(map(id, alexnet_model.classifier.parameters())) # 返回的是parameters的 内存地址
base_params = filter(lambda p: id(p) not in fc_params_id, alexnet_model.parameters())
optimizer = optim.SGD([
{'params': base_params, 'lr': LR * 0.1}, # 0 设置为0即冻结卷积层
{'params': alexnet_model.classifier.parameters(), 'lr': LR}], momentum=0.9)
bs, ncrops, c, h, w = inputs.size()     # [4, 10, 3, 224, 224
outputs = alexnet_model(inputs.view(-1, c, h, w))
outputs_avg = outputs.view(bs, ncrops, -1).mean(1)

ncrops是分割多出的10张图,然后对10张图结果取平均。

流程就是对4batch的每个10张图的图片进行调整,先将4*10,3,224,224输入model中,对结果进行分割出来,得到4batch的结果。

01_AlexNet的更多相关文章

随机推荐

  1. Codeforces Round #670 (Div. 2) B. Maximum Product (暴力)

    题意:有一长度为\(n\)的序列,求其中任意五个元素乘积的最大值. 题解:先排序,然后乘积能是正数就搞正数,模拟一下就好了. 代码: int t; ll n; ll a[N]; int main() ...

  2. C# TCP应用编程三 异步TCP应用编程

    利用TcpListener和TcpClient类在同步方式下接收.发送数据以及监听客户端连接时,在操作没有完成之前一直处于阻塞状态,这对于接受.发送数据量不大的情况或者操作勇士较短的情况下是比较方便的 ...

  3. Docker文件挂载总结

    Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...

  4. 二进制安装kubernetes(六) kube-proxy组件安装

    Kube-Proxy简述 参考文献: https://ywnz.com/linuxyffq/2530.html 运行在每个节点上,监听 API Server 中服务对象的变化,再通过管理 IPtabl ...

  5. next v5升级到next v7需要注意的地方

    title: next v5升级到next v7需要注意的地方 date: 2020-03-04 categories: web tags: [hexo,next] 大部分的设置都是一样的,但有一些细 ...

  6. IDEA 安装常用操作一

    关于IDEA的下载,破解自行百度 一.安装完成的常用设置 SDK选择.编译版本的选择,单项目选择,全局选择 maven配置,单项目,全局配置 二.IDEA如何安装lombok https://www. ...

  7. Python+argparse+notebook

    argparse"应用"于jupyter-notebook中 args.xx =======================>> args["xx" ...

  8. C++模板沉思录

    0 论抽象--前言 故事要从一个看起来非常简单的功能开始: 请计算两个数的和. 如果你对Python很熟悉,你一定会觉得:"哇!这太简单了!",然后写出以下代码: def Plus ...

  9. XSS (跨站脚本攻击) 的原理分析,测试 && 应对措施

    1 1 1 XSS (跨站脚本攻击) 的原理分析,测试 1 demo: <!DOCTYPE html> <html lang="en"> <head& ...

  10. what's the difference amount of pdf, epub, and mobi format

    what's the difference amount of pdf, epub, and Mobi format What is the difference between pdf, epub ...