建立soho公司网站,品牌网,网站建设出错1004,卡一卡二卡四卡视频免费观看一、PyTorch的torchvision内置数据集介绍 我们前面的文章里谈到的数据集是我们自己找的一些自定义数据集。那么在Pytorch中存在2种数据集#xff08;Dataset#xff09;#xff0c;即内置数据集#xff08;Built-in dataset#xff09;和自定义数据集#xff08;Custom d…一、PyTorch的torchvision内置数据集介绍 我们前面的文章里谈到的数据集是我们自己找的一些自定义数据集。那么在Pytorch中存在2种数据集Dataset即内置数据集Built-in dataset和自定义数据集Custom dataset。该2种数据集在使用时有所区别我们之前课程里学习的就是自定义数据集这里就不多讲了。
而pytorch的内置数据集Built-in dataset是由pytorch的torchvision这个库提供的我们可以直接在代码中下载下来使用包含了各种各样的机器训练所需要的数据集类型
1、首先去官网了解一下
官方文档在这torchvision — Torchvision 0.19 documentation
这是最新的pytorch官方文档可能每一年都会变目前2024年最新版的就是这样 往下滑找到这里【Dataset】的【Built-in dataset】这个就是内置数据集的官方文档 然后就能看到各种各样的数据集看不懂可以下载一下网页翻译的插件或者用微信的截图可以实时翻译任何界面的英文 然后大概整体介绍一下我们常用的一些数据集 MNIST手写数字图像数据集用于图像分类任务。CIFAR包含10个类别、60000张32x32的彩色图像数据集用于图像分类任务。COCO通用物体检测、分割、关键点检测数据集包含超过330k个图像和2.5M个目标实例的大规模数据集。ImageNet包含超过1400万张图像用于图像分类和物体检测等任务。Penn-Fudan Database for Pedestrian Detection and Segmentation用于行人检测和分割任务的数据集。STL-10包含100k张96x96的彩色图像数据集用于图像分类任务。Cityscapes包含5000张精细注释的城市街道场景图像用于语义分割任务。SQUAD用于机器阅读理解任务的数据集。 其他的比较复杂以后再说目前就这些可以了解一下比如点进去CIFAR10可以看到是一个对图片物品的识别 点击MNIST这是来自各个人的手写文字的图片数据集 2、了解数据集的三大分类训练集、验证集、测试集
数据集具体分为三大类训练集、验证集、测试集 我们可以用以前读书时的上课知识、课后练习题、期末考试来比喻这三类数据集 假设我们有已知的T1、T2、T3三个点对应的 “坐标” 是数据集里【带有标签的样本对】x1, y1、x2, y2、x3, y3x代表输入、y代表标签 这两个坐标会分别得到两个点T1、T2数据当我们用这两个数据进行机器训练时就会得到一个函数式假设y ax b那么这个【y ax b】就是【模型】
然后我们当我们把T3的【x3】输入根据【模型】【y ax b】得出 【】这个 【】是机器模型训练得到的结果而我们已知的T3坐标是【x3y3】就比如说 [0013035.jpg] 这个图片对应的是 [蚂蚁] 这个标签
那么现在将【】与【y3】进行对比就可以得出这个模型的好坏。 然后我们刚刚知道x1, y1、x2, y2参与了模型训练因此就是【训练集】而x3, y3没有参与训练只是在最后对x1, y1、x2, y2训练出来的模型进行测试他就是【测试集】 【训练集】与【测试集】有严格划分训练集只参与训练相当于我们做的课后练习、模拟试卷而测试集只参与测试相当于高考试卷你总不能把高考题直接给学生做了再参加高考吧 那么【验证集】又是什么 我们前面的例子里训练机器模型的时候我们根据T1、T2获得了【yaxb】这么个模型式子那么a、b就是【参数】 在实际机器训练中我们还需要一种参数叫【超参数】它考虑得是更加精细的方面的可能通过调整这些超参数才能让模型更加精确、误差更小 但是随着业务越来越复杂需要调整的超参数越来越多、越来越难人为调整已经不太适用 那么就产生了【验证集】借助它可以获得【最优超参数组合】 【训练集】产生模型【验证集】评估模型并找出一组最有超参数然后再交给【训练集】产出新的模型......如此反复最终将最优化的模型交给【测试集】测试 3、pytorch下载并使用数据集
回到代码 现在我们先用【CIFAR-10】这个数据集为例子讲解点开官方文档这次点左边不要点右边 然后可以看到【CIFAR-10】这个数据集需要传入这么几个参数具体作用我写在图片了 执行一下代码进行下载
import torchvision# 这里我们设置train_set是训练集数据、test_set是测试集数据
# 然后因为我根目录已经有一个dataset目录放自定义数据集了我就指定在根目录再创一个文件夹叫“dataset2”用来放下载的内置数据集
# 然后【训练集】的train参数设置为true【测试集】就是false最后允许下载
train_set torchvision.datasets.CIFAR10(./dataset2, trainTrue, downloadTrue)
test_set torchvision.datasets.CIFAR10(./dataset2, trainFalse, downloadTrue) 网速因人而异吧我这个巨特么慢
那么有迅雷或者百度网盘的超级会员的可以试一下去迅雷或者百度网盘下载然后复制粘贴进项目里就行了没有的话其实也是一样可以安心下载完挂后台去干别的了至少一小时起步 感谢来自该博主文章CIFAR-10 / CIFAR-100数据集官网/网盘下载_cifar100pytorch下载-CSDN博客 链接百度网盘 请输入提取码 提取码uwis N万年之后......终于下载安装完毕那么而我们在下载的代码下面输出一下数据集看看就会发现成功了这里注意即使我们下载完了数据集这两句代码还是要留着download参数也不用换成False因为它会自动检测已经下载存在就不会重复下载了
import torchvision# 这里我们设置train_set是训练集数据、test_set是测试集数据
# 然后因为我根目录已经有一个dataset目录放自定义数据集了我就指定在根目录再创一个文件夹叫“dataset2”用来放下载的内置数据集
# 然后【训练集】的train参数设置为true【测试集】就是false最后允许下载
train_set torchvision.datasets.CIFAR10(./dataset2, trainTrue, downloadTrue)
test_set torchvision.datasets.CIFAR10(./dataset2, trainFalse, downloadTrue)# 打印训练集和测试集的数据量
print(train_set[0])
然后在PyTorch的内置数据集中无论是CIFAR-10、MNIST还是其他数据集当你索引数据集对象时都会返回一个元组其中第一个元素是【数据】第二个元素是【标签的索引】。
那么我们知道python可以多个变量同时接收多个返回值那么就可以设两个变量来接收【数据】和【标签的索引】变量名随便起比如 那么我们将代码放到【python控制台】运行的话就会看到数据集有这么个属性【classes】这个属性是列表list而我们刚刚获取到的【标签的索引】就是对应【classes】列表里的索引那么【数据集.classes[ 标签的索引 ]】就可以获取到【标签】了 4、结合transforms把数据集转化成transforms的tensor型数据
transform有个函数叫【Compose】它可以将多个操作组合起来相当于打包然后形成一个操作流程一次性依次对图像进行所有操作
例如假设你有一个图像你想要先将其转换为灰度图像然后再将其大小调整为32x32。你可以使用【torchvision.transforms.Compose】来组合这两个转换操作
from torchvision import transforms# 创建两个转换操作
to_grayscale transforms.Grayscale(num_output_channels1) # 调灰度的操作
resize transforms.Resize((32, 32)) # 裁剪图像大小的操作# 组合这两个转换操作现在就能用它代表这两个操作了
transform transforms.Compose([to_grayscale, resize])# 使用组合的转换操作对图像一次性进行两个操作转换
image transform(image)那么有了【transform转换操作】之后翻看上面我们讲过pytorch的【CIFAR-10】接收的参数里有一个叫【transform】就是用来接收【transform转换操作】的在两个 “下载代码” 那里的第三个参数位置加上【transform transform转换操作】
train_set torchvision.datasets.CIFAR10(./dataset2, trainTrue, transformdataset_transfrom, downloadTrue)
test_set torchvision.datasets.CIFAR10(./dataset2, trainFalse, transformdataset_transfrom, downloadTrue) 5、最后结合tensorboard打印一下图像
既然现在图像数据集已经成了tensor类型数据那就可以用tensorboard打印一下图像了
完整代码
import torchvision
from torch.utils.tensorboard import SummaryWriter# torchvision.transforms.Compose是一个函数它可以将多个图像转换操作组合在一起
dataset_transfrom torchvision.transforms.Compose([torchvision.transforms.ToTensor() # 将图像转换为【tensor张量】操作# 还可以添加一些裁剪、转灰度......等等图像操作
])# 这里我们设置train_set是训练集数据、test_set是测试集数据
# 然后因为我根目录已经有一个dataset目录放自定义数据集了我就指定在根目录再创一个文件夹叫“dataset2”用来放下载的内置数据集
# 然后【训练集】的train参数设置为true【测试集】就是false并开启transform数据转换最后允许下载
train_set torchvision.datasets.CIFAR10(./dataset2, trainTrue, transformdataset_transfrom, downloadTrue)
test_set torchvision.datasets.CIFAR10(./dataset2, trainFalse, transformdataset_transfrom, downloadTrue)# 输出一些tensor类型的数据集数据
print(train_set[0])# 最后利用tensorboard打印出照片
write SummaryWriter(CIFAR-10)
for i in range(10):# 遍历10张图片img, target train_set[i]write.add_image(【CIFAR-10】_img, img, i)write.close()记得关闭上一个tensorboard的终端