pytorch深度学习实战——预训练网络
来源:《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深度学习实战——预训练网络相关推荐
- 深度学习(预训练网络resnet18)
还是针对天气处理的图片的四个分类,使用这个网络模型resnet18 import torch import torch.nn as nn import torch.nn.functional as F ...
- Pytorch 深度学习实战教程(二):UNet语义分割网络
本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 一 ...
- Pytorch深度学习实战教程(二):UNet语义分割网络
1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 如果不了解语义分割原理以及开发环境的搭建,请看该系列教程的上一篇文章< ...
- 实战例子_Pytorch官方力荐新书《Pytorch深度学习实战指南》pdf及代码分享
PyTorch是目前非常流行的机器学习.深度学习算法运算框架.它可以充分利用GPU进行加速,可以快速的处理复杂的深度学习模型,并且具有很好的扩展性,可以轻松扩展到分布式系统.PyTorch与Pytho ...
- PyTorch深度学习实战(5)——计算机视觉基础
PyTorch深度学习实战(5)--计算机视觉基础 0. 前言 1. 图像表示 2. 将图像转换为结构化数组 2.1 灰度图像表示 2.2 彩色图像表示 3 利用神经网络进行图像分析的优势 小结 系列 ...
- 深度学习-Tensorflow2.2-预训练网络{7}-迁移学习基础针对小数据集-19
使用预训练网络(迁移学习) 预训练网络是一个保存好的之前已在大型数据集(大规模图像分类任务)上训练好的卷积神经网络 如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以作为有 ...
- 【深度学习实战】---TensorBoard网络可视化
[深度学习实战]-TensorBoard网络可视化 前记 为了能够更加深层次的理解我们的网络结构,不必要是画一份简简单单的网络的草图(如[深度学习实战]迈出第一步------编写第一个神经网络),那么 ...
- PyTorch深度学习实战:从新手小白到数据科学家电子书
作者:张敏 著 出版社:电子工业出版社 ISBN:9787121388293 出版时间:2020-08-01 PyTorch深度学习实战:从新手小白到数据科学家
- Pytorch深度学习实战教程:UNet语义分割网络
1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 本文的开发环境如下: 开发环境:Windows 开发语言:Python3. ...
最新文章
- 【青少年编程】【Scratch】10 画笔模块
- 美国康普SYSTIMAX iPatch智能配线系统介绍
- 使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发
- mac 10.11 安装mysql5.7.10压缩版
- iptables--静态防火墙实例教程
- 典型电商网站的站点导航的布局结构实现,及运用三种方式实现下拉效果
- LEBERT:基于词汇增强的中文NER模型
- 2021-09-0884. 柱状图中最大的矩形 栈
- QTP10.0安装所遇问题-脚本调试器问题
- SQL Serevr 2012 安装教程
- OA选择首先要清晰概念
- zipArchive not found
- Geek(一个好用的强力卸载软件工具,包括注册表所有依赖项全部清理掉)
- phpwind不支持php7,PHP论坛程序PHPWind 7发布 新增四个功能
- 前端工程师的摸鱼日常(2)
- p站自动收藏画作 post请求,request payload
- Android缓存,删除网络依赖包缓存
- Redis服务入侵记
- GPU Profiling
- 计算机开机最快,你电脑开机要多久?4招让你的电脑开机速度比之前快几倍