淘宝天猫优惠卷网站建设,如何给网站增加关键词,wordpress菜单前面加图标,wp在本地做的网站 上传人这辈子千万不要马虎两件事 一是找对爱人、二是选对事业 因为太阳升起时要投身事业 太阳落山时要与爱人相拥 一、准备数据集
蚂蚁蜜蜂数据集
蚂蚁蜜蜂的图片#xff0c;文件名就是数据的label 二、使用Dataset加载数据
打开pycharm#xff0c;选择Anaconda创建的pytorch环… 人这辈子千万不要马虎两件事 一是找对爱人、二是选对事业 因为太阳升起时要投身事业 太阳落山时要与爱人相拥 一、准备数据集
蚂蚁蜜蜂数据集
蚂蚁蜜蜂的图片文件名就是数据的label 二、使用Dataset加载数据
打开pycharm选择Anaconda创建的pytorch环境
将数据集放在项目的根目录下并修改文件名 新建 read_data.py文件编写如下代码
from torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset):# 获取训练数据的listdef __init__(self, root_dir, label_dir):self.root_dir root_dirself.label_dir label_dirself.path os.path.join(self.root_dir, self.label_dir)self.img_path os.listdir(self.path)# 获取每一张图片及其labeldef __getitem__(self, idx):img_name self.img_path[idx]img_item_path os.path.join(self.root_dir, self.label_dir, img_name)img Image.open(img_item_path)label self.label_dirreturn img, labeldef __len__(self):return len(self.img_path)root_dir dataset/train
ant_label_dir ants
bee_label_dir bees
ants_dataset MyData(root_dir, ant_label_dir)
bees_dataset MyData(root_dir, bee_label_dir)train_dataset ants_dataset bees_dataset
解释
1. MyData继承Dataset类
2. 重写里面的__init__方法在MyData类初始化时通过拼接数据路径os.listdir()加载出数据的list列表
3. 重写里面的__getitem__方法将一张一张地将list的图片和对应的label加载出来
4.train_dataset ants_dataset bees_dataset得到训练数据集
三、TensorBoard的使用
安装TensorBoard需要的包 pip install tensorboard 编写如下代码
from torch.utils.tensorboard import SummaryWriter# 指定log文件生成的位置
writer SummaryWriter(logs)for i in range(100):第一个参数图像的title第二个参数纵坐标的值 第三个参数横坐标的值writer.add_scalar(y3x, 3 * i, i)# 关闭资源
writer.close()运行代码会在SummaryWriter指定的位置生成log文件 在Terminal运行下面语句
可以自己指定端口防止冲突 tensorboard --logdirlogs --port6007 运行输出
在浏览器打开 使用 writer.add_image 加载图片
编写下面代码
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np# 指定log文件生成的位置
writer SummaryWriter(logs)image_path dataset/train/ants/7759525_1363d24e88.jpg
image_PIL Image.open(image_path)
image_array np.array(image_PIL)
第一个参数图像的title
第二个参数图片的numpy值
第三个参数步数
第四个参数将图片进行转换3通道放在前面writer.add_image(test, image_array, 1, dataformatsHWC)for i in range(100):第一个参数图像的title第二个参数纵坐标的值 第三个参数横坐标的值writer.add_scalar(y3x, 3 * i, i)# 关闭资源
writer.close()同样在控制台打开运行生成的日志文件 四、Transforms的使用
图片转换工具
ToTensor() 把 PIL格式或者numpy格式转换成tensor
编写如下代码
from PIL import Image
from torchvision import transformsimg_path dataset/train/ants/0013035.jpg
img Image.open(img_path)# 使用transforms
tensor_trans transforms.ToTensor()
tensor_img tensor_trans(img)print(tensor_img)
输出
tensor([[[0.3137, 0.3137, 0.3137, ..., 0.3176, 0.3098, 0.2980],[0.3176, 0.3176, 0.3176, ..., 0.3176, 0.3098, 0.2980],[0.3216, 0.3216, 0.3216, ..., 0.3137, 0.3098, 0.3020],...,[0.3412, 0.3412, 0.3373, ..., 0.1725, 0.3725, 0.3529],[0.3412, 0.3412, 0.3373, ..., 0.3294, 0.3529, 0.3294],[0.3412, 0.3412, 0.3373, ..., 0.3098, 0.3059, 0.3294]],[[0.5922, 0.5922, 0.5922, ..., 0.5961, 0.5882, 0.5765],[0.5961, 0.5961, 0.5961, ..., 0.5961, 0.5882, 0.5765],[0.6000, 0.6000, 0.6000, ..., 0.5922, 0.5882, 0.5804],...,[0.6275, 0.6275, 0.6235, ..., 0.3608, 0.6196, 0.6157],[0.6275, 0.6275, 0.6235, ..., 0.5765, 0.6275, 0.5961],[0.6275, 0.6275, 0.6235, ..., 0.6275, 0.6235, 0.6314]],[[0.9137, 0.9137, 0.9137, ..., 0.9176, 0.9098, 0.8980],[0.9176, 0.9176, 0.9176, ..., 0.9176, 0.9098, 0.8980],[0.9216, 0.9216, 0.9216, ..., 0.9137, 0.9098, 0.9020],...,[0.9294, 0.9294, 0.9255, ..., 0.5529, 0.9216, 0.8941],[0.9294, 0.9294, 0.9255, ..., 0.8863, 1.0000, 0.9137],[0.9294, 0.9294, 0.9255, ..., 0.9490, 0.9804, 0.9137]]])
常见的Transforms
在机器学习和深度学习中数据转换Transforms是一种常见的操作用于对数据进行预处理、增强或标准化。下面是一些常见的数据转换操作
1. 数据标准化Normalization将数据按比例缩放使其落在特定的范围内通常是将数据映射到0到1之间或者使用均值为0、方差为1的分布更快收敛。这可以通过以下方法实现
- Min - Max标准化将数据缩放到指定的最小值和最大值之间。
- Z-Score标准化将数据转化为均值为0、标准差为1的分布。
2. 数据增强Data Augmentation用于扩充训练数据集增强样本的多样性提高模型的泛华能力。常见的数据增强操作包括
- 随机裁剪Random Crop随机裁剪图像的一部分以减少位置的依赖性。
- 随机翻转Random Filp随机水平或垂直翻转图像增加数据的多样性。
- 随机旋转Random Rotation随机旋转图像的角度增加数据的多样性。
3. 图像预处理用于对图像进行预处理以减少噪声、增强特征或改变图像的外观。一些常见的图像预处理操作包括
- 图像平滑Image Smoothing使用滤波器对图像进行平滑处理减少噪声。
- 直方图均衡化Histogram Equalization增强图像的对比度使得图像中的像素值更加均匀分布。
- 图像缩放Image Resizing改变图像的尺寸通常用于将图像调整为模型输入的大小。
4. 文本预处理用于对文本数据进行预处理和清洗以便更好地适应模型的输入要求。一些常见的文本预处理操作包括
- 分词Tokenization将文本分割成单个的词或字符。
- 去除停用词Stopword Removal去除常见的无意义词语如“a”,“the”等。
- 文本向量化Text Vectorzation将文本转换为数值形式如使用词袋模型或词嵌入。
以上只是一些常见的数据转换操作示例实际应用中可能会根据任务和数据的特点进行适当的调整和组合。在使用转换操作时可以使用各种机器学习框架如PyTorch、TensorFlow提供的相关库或函数来实现这些操作。
示例代码如下
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformsimg_path hymenoptera_data/16.jpg
img Image.open(img_path)writer SummaryWriter(logs)# totensor使用
tensor_trans transforms.ToTensor()
tensor_img tensor_trans(img)
writer.add_image(lyy, tensor_img)# Normalize 使用
trans_norm transforms.Normalize([111,111,111],[10,10,10])
img_norm trans_norm(tensor_img)
writer.add_image(normalize, img_norm, 2)# resize
trans_resize transforms.Resize( (512, 512))
img_resize trans_resize(img) # 输入的是Image类型的图像
img_resize_tensor transforms.ToTensor()tensor_img tensor_trans(img_resize)
writer.add_image(resize, tensor_img, 0)# compose 用法
trans_resize_2 transforms.Resize(123)
trans_compose transforms.Compose([trans_resize_2, tensor_trans])
img_resize_2 trans_compose(img)
writer.add_image(resize2, img_resize_2,1)# randomCrop
trans_random transforms.RandomCrop((20,50))
trans_compose_2 transforms.Compose([trans_random, tensor_trans])
for i in range(10):img_crop trans_compose_2(img)writer.add_image(randomCrop, img_crop, i)writer.close()print(end)五、torchvision中数据集使用
pytorch提供了很多的数据集提供给我们学习使用。
进入官网 选择Dataset数据集 下面就是常用的数据集 CIFAR10数据集使用示例 代码示例
import torchvision
from torch.utils.tensorboard import SummaryWriterdataset_transfrom torchvision.transforms.Compose([torchvision.transforms.ToTensor])train_set torchvision.datasets.CIFAR10(root./cifar10, trainTrue, transformdataset_transfrom, downloadTrue)
test_set torchvision.datasets.CIFAR10(root./cifar10, trainFalse, transformdataset_transfrom, downloadTrue)writer SummaryWriter(test_torchvision)
for i in range(10):img, target test_set[i]writer.add_image(test_torchvision, img, i)writer.close() 提示这样下载数据集很慢可以使用迅雷下载 ctrl CIFAR10 进入类里面里面有下载地址如下 把下载好的数据集压缩包放在指定路径下即可。 然后再tensorboard面板就能看到下载的数据集 六、DataLoader使用
Dataset是整理好的数据集
DataLoader是把这个数据集加载到神经网络中去训练
使用示例
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWritertest_data torchvision.datasets.CIFAR10(./cifar10, trainFalse, transformtorchvision.transforms.ToTensor())
test_loader DataLoader(datasettest_data, batch_size64, shuffleTrue, num_workers0, drop_lastFalse)writer SummaryWriter(dataloader)step 0
for data in test_loader:imgs, targets datawriter.add_images(dataloader, imgs, step)step step 1writer.close()
解释
通过创建 test_loader您可以使用 for 循环迭代它来逐批获取测试数据
dataset: 指定要加载的数据集test_data。batch_size: 指定每个批次中的样本数量。在这里每个批次中有64个样本。shuffle: 指定是否对数据进行洗牌随机重排。如果设置为 True每个 epoch训练周期开始时数据将被随机打乱顺序。这对于增加数据的随机性、减少模型对输入顺序的依赖性很有用。num_workers: 指定用于数据加载的子进程数量。在这里设置为0表示在主进程中加载数据没有额外的子进程参与。如果设置为大于0的值将使用多个子进程并行加载数据可以加快数据加载速度。drop_last: 指定当数据样本数量不能被 batch_size 整除时是否丢弃最后一个不完整的批次。如果设置为 True最后一个不完整的批次将被丢弃如果设置为 False最后一个不完整的批次将保留。
运行之后在tensorboard面板查看