08 | Torchvision(下):其他有趣的功能
常见网络模型
torchvision.models 模块
- 深入了解
- 翻译
- 解释
- 总结
Torchvision(下):其他有趣的功能 本文介绍了Torchvision中的一些有趣功能,主要包括对经典网络模型的实例化和使用,以及模型微调的方法。文章首先详细介绍了Torchvision中的`torchvision.models`模块,该模块包含了常见的网络模型结构的定义,可以解决图像分类、图像分割、物体检测和视频分类等问题。作者以GoogLeNet网络为例,讲解了如何实例化一个网络模型,并介绍了使用预训练好的模型以及模型微调的方法。此外,文章还介绍了Torchvision提供的其他常用函数,如make_grid和save_img,展示了它们的有趣功能。通过简洁清晰的语言,为读者提供了对Torchvision中有趣功能的快速了解,使读者能够快速掌握相关技术特点。文章内容涵盖了实际代码示例,帮助读者更好地理解和应用所介绍的功能。 总的来说,本文通过介绍Torchvision中的有趣功能,使读者能够快速了解如何利用Torchvision进行模型实例化、微调以及其他常用函数的应用,为读者提供了丰富的实际操作经验和技术指导。文章内容丰富,涵盖了实际代码示例,帮助读者更好地理解和应用所介绍的功能。
《PyTorch 深度学习实战》,新⼈⾸单¥59
全部留言(21)
- 最新
- 精选
- autipleximport torch import torchvision.models as models # 加载预训练模型 googlenet = models.googlenet(pretrained=True) # 提取分类层的输入参数 fc_in_features = googlenet.fc.in_features print("fc_in_features:", fc_in_features) # 查看分类层的输出参数 fc_out_features = googlenet.fc.out_features print("fc_out_features:", fc_out_features) # 修改预训练模型的输出分类数(在图像分类原理中会具体介绍torch.nn.Linear) googlenet.fc = torch.nn.Linear(fc_in_features, 10) ''' 输出: fc_in_features: 1024 fc_out_features: 1000 ''' 老师这段代码里 torch.nn.Linear里是不是应该是fc_out_features,因为不是要转换输出分类数为10么
作者回复: 你好,autiplex。谢谢你的留言。 fc_out_features 是原来googlenet最后一层(fc层)的输出,10是我们期望的输出,现在是要将fc_out_features(1000)替换成10。 因此,googlenet.fc = torch.nn.Linear(fc_in_features, 10),这里表示最后一层的输出改为10。 torch.nn.Linear的参数是:(网络输入特征数,网络输出特征数),所以第一个参数应该是fc_in_features。
2021-11-1116 - AstrHan老师,微调的原理是什么啊?image net训练出来的倒数第二层应该是包含1000个类型的特征,那微调训练之后这层输出的会全部变成狗相关的特征吗?如果这样,那训练过程感觉反而会更慢啊。还是说微调训练最多的是输出层,降低倒数第二层里非狗的特征权重?
作者回复: 你好,AstrHan。感谢你的留言。 首先,不使用预训练模型的话,我们的模型是从随机初始化的参数开始训练。这个训练过程会非常慢。 使用预训练模型话,相当于在预训练模型的基础上进行训练。 举个例子,把模型训练比作从山顶走向山脚的过程,山脚就是我们模型收敛的状态。 不使用预训练模型的话,就相当于从山顶开始一步步向下走。 使用预训练模型的话,相当于从一个接近山脚的位置向下走。 有两种微调方式。第一种就是这节课中提到的微调,也就是固定卷积层的参数,只训练全连接层。 这也可以理解为Embedding。ImageNet上有很多丰富的数据,现在有一个在ImageNet上训练很好的模型,然后将我们例子中的图片(狗)用ImageNet上训练的模型进行特征提取(ImageNet模型倒数第二层的输出)。 提取后的数据相当于是原始图片(狗)的另一种表示。 这个过程相当于,原始的数据就是狗的图片。 经过ImageNet提取后的特征变为有有耳朵、四条腿、爱吃骨头、跑得快、会汪汪叫之类的特征。 然后用提取后的特征作为新模型的输入,这里的新模型就是修改后的全连接层。 还有一种微调,会在14节中讲到,就是使用在ImageNet上训练好的模型的参数,作为我们模型的初始化参数进行训练。这种方式是训练所有的参数,而不是固定全连接层前面的参数。
2021-10-28215 - vcjmhgvgg16 = models.vgg16(pretrained=True)
作者回复: 你好,谢谢留言。每次都非常正确👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻。^^
2021-10-276 - ..................老师请问这句话“tensor:类型是 Tensor 或列表,如果输入类型是 Tensor,其形状应是 (B x C x H x W);”中的B,C,H,W分别是什么意思?实在想不明白
作者回复: 你好,感谢你的留言。 B是指batch_size,就是一次处理多少张图片。 C是指channel,图片的通道数,通常来说是3。 H和W就是只图片的高与宽了。
2022-04-234 - 徐洲更老师您好,请教一个可能跟计算机视觉相关的深度学习的问题。假如一款3D的赛车类游戏,我在里面做了一系列操作,从起点开到了终点,我能否让神经网络根据我的操作和对应的录屏学会我的操作,并大致重复出来呢?这需要什么样的深度学习模型呢?
作者回复: 你好,徐洲更。 可以学习一下强化学习(Reinforcement Learning)相关的内容。^^
2021-12-0223 - 奔跑的火龙果iter(tensor_dataloader)和next()分别是什么意思呢?
作者回复: 你好,感谢留言。 iter()函数用来生成迭代器。 next()函数用来获取迭代器的元素。 具体可以参见Python迭代器的创建和使用。 https://www.w3school.com.cn/python/ref_func_iter.asp
2022-08-23归属地:北京1 - John(易筋)解决 AttributeError: module 'torchvision.models' has no attribute 'googlenet' 运行以下命令报错 googlenet = models.googlenet() 解决方法 google_net = torchvision.models.inception_v3(pretrained=True) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-3-0e4152b595be> in <module> 1 import torchvision.models as models ----> 2 googlenet = models.googlenet() AttributeError: module 'torchvision.models' has no attribute 'googlenet' ref: https://stackoverflow.com/questions/55762706/how-to-load-pretrained-googlenet-model-in-pytorch
作者回复: 👍🏻👍🏻👍🏻^^
2022-07-30归属地:北京1 - 度googlenet.fc = torch.nn.Linear(fc_in_features, 10) print("fc_out_features:", fc_out_features) 老师,我更改后得到的输出特征数还是 fc_out_features: 1000 这个结果。请赐教!
作者回复: hello。print(googlenet.fc.out_features)试试呢? fc_out_features变量并没有赋新值,所以不会改变呀
2021-11-161 - cleevgg16 = models.vgg16(pretrained=True)
作者回复: 你好,clee。谢谢你的留言。 👍🏻👍🏻👍🏻👍🏻,完全正确^^。
2021-11-071 - 夏阳老师,这段段代码会报错 torchvision.utils.save_image(grid_tensor, 'grid.jpg') ValueError: unknown file extension: 搞不清楚什么状况,请帮忙指教
作者回复: 你好,夏阳,感谢你的留言。能新开一个留言提供一下你的代码吗?或者在发到微信群里。
2021-10-3041