来源:《Pytorch深度学习实战》,2.1,一个识别图像主体的预训练网络

from torchvision import models
from torchvision import transforms
from PIL import Image
import torchdir(models)
alexnet = models.AlexNet()
resnet = models.resnet101(pretrained=True)
resnetpreprocess = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])img = Image.open("D:\\PyCharm\\pythonProject\\bobby.PNG")
img.show()
img_t = preprocess(img)
batch_t = torch.unsqueeze(img_t, 0)
resnet.eval()
out = resnet(batch_t)
outwith open("D:\\PyCharm\\pythonProject\\imagenet_classes.txt") as f:labels = [line.strip() for line in f.readline()]_, index = torch.max(out, 1)percentage = torch.nn.functional.softmax(out, dim=1)[0] * 100
labels[index[0]], percentage[index[0]].item()_, indices = torch.sort(out, descending=True)
[(labels[idx], percentage[idx].item()) for idx in indices[0][:5]]

运行出现问题:list index out of range

被沈老师找出问题了:第30行readline改为readlines(怎么有人照着书打也能打错?????下次代码报错请先检查是否照着打打错了)

沈老师讲解:readline是只读一列或一行,后面索引207个元素,肯定会越界,而readlines是每行都读

from torchvision import models
from torchvision import transforms
from PIL import Image
import torchdir(models)  # 使用dir函数返回models的方法属性列表
alexnet = models.AlexNet()  # 实例化AlexNet类,alexnet为实例化后的一个对象
resnet = models.resnet101(pretrained=True)  # 加载预训练模型
resnetpreprocess = transforms.Compose([transforms.Resize(256),  # 缩放transforms.CenterCrop(224),  # 围绕中心裁剪transforms.ToTensor(),  # 转换为一个张量transforms.Normalize(mean=[0.485, 0.456, 0.406],  # 定义的均值std=[0.229, 0.224, 0.225]  # 定义的标准差)])
# 预处理函数:将输入图像缩放到256*256个像素,围绕中心将图像裁剪为224*224个像素,并将其转换为一个张量,
# 对其RGB分量(红色、绿色、蓝色)进行归一化处理,使其具有定义的均值和标准差img = Image.open("D:\\PyCharm\\pythonProject\\bobby.PNG")  # 打开文件夹中的图片文件
img.show()  # 显示图片
img_t = preprocess(img)  # 使用预处理函数处理图片
batch_t = torch.unsqueeze(img_t, 0)  # 按照网络期望的方式对输入的张量进行重塑、裁剪和归一化处理
resnet.eval()  # 将网络置于eval模式
out = resnet(batch_t)
outwith open("D:\\PyCharm\\pythonProject\\imagenet_classes.txt") as f:labels = [line.strip() for line in f.readlines()]  # 加载一个包含1000个标签的文件,strip()用于移除字符串头尾的空格_, index = torch.max(out, 1)  # max函数用于输出多个变量中的最大值percentage = torch.nn.functional.softmax(out, dim=1)[0] * 100  # softmax函数用于将n维张量放缩到(0,1)区间,且区间总和为1
labels[index[0]], percentage[index[0]].item()_, indices = torch.sort(out, descending=True)  # sort函数将值按升序或降序排列,并提供排序值在原始数组中的索引
[(labels[idx], percentage[idx].item()) for idx in indices[0][:5]]  # 以列表形式返回
print(labels[index[0]], percentage[index[0]].item())
print([(labels[idx], percentage[idx].item()) for idx in indices[0][:5]])

正确代码如上

另外:需要print出来才可以显示

本节作为pytorch学习的引例,具体关于计算机视觉的知识不需要了解太多,但本例说明了使用pytorch做机器学习的一般步骤。首先是对选用的模型进行训练,使各个网络中的数据都是可供使用的,其次对输入数据进行预处理,使其值处在我们规定的范围之内,然后用训练好的模型执行输入数据,得到结果,最后对输出进行处理,使其转换为我们需要的格式。

pytorch深度学习实战——预训练网络相关推荐

  1. 深度学习(预训练网络resnet18)

    还是针对天气处理的图片的四个分类,使用这个网络模型resnet18 import torch import torch.nn as nn import torch.nn.functional as F ...

  2. Pytorch 深度学习实战教程(二):UNet语义分割网络

    本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 一 ...

  3. Pytorch深度学习实战教程(二):UNet语义分割网络

    1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 如果不了解语义分割原理以及开发环境的搭建,请看该系列教程的上一篇文章< ...

  4. 实战例子_Pytorch官方力荐新书《Pytorch深度学习实战指南》pdf及代码分享

    PyTorch是目前非常流行的机器学习.深度学习算法运算框架.它可以充分利用GPU进行加速,可以快速的处理复杂的深度学习模型,并且具有很好的扩展性,可以轻松扩展到分布式系统.PyTorch与Pytho ...

  5. PyTorch深度学习实战(5)——计算机视觉基础

    PyTorch深度学习实战(5)--计算机视觉基础 0. 前言 1. 图像表示 2. 将图像转换为结构化数组 2.1 灰度图像表示 2.2 彩色图像表示 3 利用神经网络进行图像分析的优势 小结 系列 ...

  6. 深度学习-Tensorflow2.2-预训练网络{7}-迁移学习基础针对小数据集-19

    使用预训练网络(迁移学习) 预训练网络是一个保存好的之前已在大型数据集(大规模图像分类任务)上训练好的卷积神经网络 如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以作为有 ...

  7. 【深度学习实战】---TensorBoard网络可视化

    [深度学习实战]-TensorBoard网络可视化 前记 为了能够更加深层次的理解我们的网络结构,不必要是画一份简简单单的网络的草图(如[深度学习实战]迈出第一步------编写第一个神经网络),那么 ...

  8. PyTorch深度学习实战:从新手小白到数据科学家电子书

    作者:张敏 著 出版社:电子工业出版社 ISBN:9787121388293 出版时间:2020-08-01 PyTorch深度学习实战:从新手小白到数据科学家

  9. Pytorch深度学习实战教程:UNet语义分割网络

    1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 本文的开发环境如下: 开发环境:Windows 开发语言:Python3. ...

最新文章

  1. 【青少年编程】【Scratch】10 画笔模块
  2. 美国康普SYSTIMAX iPatch智能配线系统介绍
  3. 使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发
  4. mac 10.11 安装mysql5.7.10压缩版
  5. iptables--静态防火墙实例教程
  6. 典型电商网站的站点导航的布局结构实现,及运用三种方式实现下拉效果
  7. LEBERT:基于词汇增强的中文NER模型
  8. 2021-09-0884. 柱状图中最大的矩形 栈
  9. QTP10.0安装所遇问题-脚本调试器问题
  10. SQL Serevr 2012 安装教程
  11. OA选择首先要清晰概念
  12. zipArchive not found
  13. Geek(一个好用的强力卸载软件工具,包括注册表所有依赖项全部清理掉)
  14. phpwind不支持php7,PHP论坛程序PHPWind 7发布 新增四个功能
  15. 前端工程师的摸鱼日常(2)
  16. p站自动收藏画作 post请求,request payload
  17. Android缓存,删除网络依赖包缓存
  18. Redis服务入侵记
  19. GPU Profiling
  20. 计算机开机最快,你电脑开机要多久?4招让你的电脑开机速度比之前快几倍

热门文章

  1. 我用Python爬了7W知乎用户信息,终于爬获了心仪小姐姐……
  2. 从零开始学运算放大器笔记一 | 认识运算放大器
  3. 以客户为中心的销售方法取决于哪些原则
  4. 基于工程热物理的燃料电池(Thermolib)和整车模型集成系统级仿真探讨
  5. 介绍制作一款漂亮的美女悬浮在线客服!
  6. java手机号隐藏工具方法:前三后四
  7. 聚生网管2008试用功能去除
  8. CSP201903-4消息传递接口 从30分到AC 反思日记
  9. python telnet线程锁_对python使用telnet实现弱密码登录的方法详解
  10. 小米4刷魅族系统后无服务器,小米4刷魅族Flyme简评