python - pytorch dataset.imagefolder的loader选项的作用是什么?
问题描述
PyTorch dataset.imagefolder 的 loader 选项的作用是什么?
实际上,现在我在一个文件夹中有 10,000 张图像,但我只想使用 100 张图像。现在我按索引加载所有图像和子集数据集。
from torch.utils.data import Subset
a = dset.ImageFolder(root=path_F,transform=transform)
index = list(range(0,100))
b = Subset(a,index)
loader 选项可以使我的代码简单吗?
解决方案
loader
负责加载给定路径的图像。默认情况下 PyTorch 使用pillow
它的Image.open(path)
功能,请参阅docs。
您可以像这样指定自定义加载(按45
度加载和旋转):
import torchvision
from PIL import Image
def loader(path):
return Image.open(path).rotate(45)
dataset = torchvision.datasets.ImageFolder("images", loader=loader)
所以不,你不应该用它来选择图像。
原则上,您可以使用is_valid_file
参数来这样做:
class Chooser:
def __init__(self):
self._counter = -1
def __call__(self, path):
self._counter += 1
return self._counter < 100
dataset = torchvision.datasets.ImageFolder("images", is_valid_file=Chooser())
我强烈反对这种方法,因为意图不是很清楚,它会通过整个数据集检查每个图像。你现在的路就是要走的路。
推荐阅读
- javascript - React 警告:如何在我的组件中找到错误的 setState() 调用?
- go - 在 macOS (10.14.6) 上使用“shirou/gopsutil”Go 包作为供应商包失败
- javascript - 循环不是每一轮都输出
- javascript - 模式关闭时取消 API 调用 - React
- javascript - 我添加到视频中的文字在全屏模式下消失
- rest - 资源是否将始终在 REST 中的服务器上?
- javascript - JS从没有服务器的本地文件中读取
- javascript - 为什么这批交易在 Cloud Firestore 中失败?
- python - 唯一字符串值的累积聚合
- javascript - React 组件多次重新渲染