机器学习学习笔记-20241015

学习神经网络,还是死跟着一个老师,换了不同课程,不同答案,就很烦。

初学YOLOV5

我是跟着下面这个进行的。

建议大家跟着一条路学到黑
一定要记住自己的Anaconda安装在那里了,我安装在G盘,先g:,然后cd anaconda,

由于最开始的时候,下载Anaconda时候我没有把该选上全选上,我重新安装了下Anaconda。
在这里插入图片描述
确实用处挺大的,学到了不少。

小土堆

搞完了以后,学了一星期的李沐,但是难度太大了。还是直接学习小土堆的pytorch

学习小土堆,第一步还是得先把文件下了再说。我试着下载pycharm,结果发现最新版本的和他的教程不一样,索性直接使用vscode,感觉更方便。
https://pan.baidu.com/s/1CvTIjuXT4tMonG0WltF-vQ?pwd=jnnp 提取码:jnnp

Dataset实践

# 导入PyTorch中的Dataset类,用于创建自定义数据集
from torch.utils.data import Dataset  
# 导入PIL库中的Image类,用于打开图片
from PIL import Image  
# 导入操作系统相关的模块,用于路径操作
import os  

# 定义一个叫做 myData 的类,继承自 Dataset 类
class myData(Dataset):
    # 初始化函数,当我们创建这个类的对象时会自动执行
    def __init__(self, root_dir, label_dir):  
        # 把传入的根目录保存起来
        self.root_dir = root_dir  
        # 把传入的标签目录(表示分类名称)保存起来
        self.label_dir = label_dir  
        # 用 os.path.join 把根目录和标签目录组合成一个完整的路径
        # 比如根目录是 "G:\\ML\\数据集\\hymenoptera_data\\train"
        # 标签目录是 "ants",那么组合后就是 "G:\\ML\\数据集\\hymenoptera_data\\train\\ants"
        self.path = os.path.join(self.root_dir, self.label_dir)  
        
        # 用 os.listdir 获取这个路径下的所有文件名,存储为一个列表
        # 比如这个目录里有三张图片,列表可能就是 ["ant1.jpg", "ant2.jpg", "ant3.jpg"]
        self.img_path = os.listdir(self.path)

    # 获取某一张图片以及它的标签,当我们用 myData[idx] 访问时会自动调用这个函数
    def __getitem__(self, idx):  
        # 根据索引 idx 获取文件名,比如 idx 是 0,那就取列表中的第一个文件名
        img_name = self.img_path[idx]  
        
        # 将根目录、标签目录和图片文件名组合成图片的完整路径
        # 比如根目录是 "G:\\ML\\数据集\\hymenoptera_data\\train",
        # 标签目录是 "ants",文件名是 "ant1.jpg",
        # 那么最终路径就是 "G:\\ML\\数据集\\hymenoptera_data\\train\\ants\\ant1.jpg"
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)  
        
        # 用 Image.open 打开这张图片,img 是图片的数据
        img = Image.open(img_item_path)  
        
        # 标签就是标签目录,比如 "ants" 或 "bees"
        label = self.label_dir  
        
        # 返回图片和标签
        return img, label  

    # 返回数据集的总长度(图片的数量),比如有 100 张图片,这个函数就返回 100
    def __len__(self):  
        return len(self.img_path)

# 定义根目录的路径
root_dir = "G:\\ML\\数据集\\hymenoptera_data\\train"  
# 定义蚂蚁图片所在的标签目录
ants_label_dir = "ants"  
# 定义蜜蜂图片所在的标签目录
bees_label_dir = "bees"  

# 创建一个蚂蚁数据集对象,包含所有蚂蚁的图片
ants_dataset = myData(root_dir, ants_label_dir)  
# 创建一个蜜蜂数据集对象,包含所有蜜蜂的图片
bees_dataset = myData(root_dir, bees_label_dir)  

# 把蚂蚁数据集和蜜蜂数据集合并成一个总的数据集,包含了所有图片
train_dataset = ants_dataset + bees_dataset  

TensorBoard使用

学习TensorBoard中,记得要把终端改成CMD
请添加图片描述

(study) G:\ML>tensorboard --logdir=logs --port=6007
启动了 TensorBoard,并指定了端口 6007,可以通过浏览器访问 http://localhost:6007 来查看 TensorBoard 界面。

图像是三角形的,查看一下logs里面是不是有多个事件!!!只保留一个

# 从torch.utils.tensorboard导入SummaryWriter类,用于将数据写入TensorBoard
from torch.utils.tensorboard import SummaryWriter

# 导入NumPy库,用于处理数组
import numpy as np

# 从PIL(Python Imaging Library)导入Image类,用于图像处理
from PIL import Image

# 创建一个SummaryWriter实例,用于记录TensorBoard日志
# "logs"是存储日志文件的目录
writer = SummaryWriter("logs")

# 定义图像文件的路径
# 使用r表示原始字符串,避免转义字符
image_path = r"G:\ML\data\train\ants_image\5650366_e22b7e1065.jpg"

# 使用PIL的Image类打开图像文件
# img_PIL现在是一个PIL图像对象
img_PIL = Image.open(image_path)

# 将PIL图像对象转换为NumPy数组
# img_array现在是一个包含图像数据的数组
img_array = np.array(img_PIL)

# 将图像添加到TensorBoard
# "test"是该图像的标签,2是全局步数,dataformats指定数据格式为'高度x宽度x通道'
writer.add_image("test", img_array, 2, dataformats='HWC')

# 使用for循环向TensorBoard添加标量数据
# 在这个循环中,x的值从0到99
for i in range(100):
    # 将当前循环的索引i作为标量值添加到TensorBoard
    # "y=x"是该标量的标签,i是标量的值
    writer.add_scalar("y=x", i, i)

# 关闭SummaryWriter,确保所有日志数据被写入文件
# writer.close是一个方法,应该调用以完成写入
writer.close()

# 从torchvision库导入transforms模块,用于对图像进行转换
from torchvision import transforms

# 导入PIL库的Image类,用于图像处理
from PIL import Image

# 定义图像文件的路径,使用原始字符串格式避免转义字符问题
img_path = r"hymenoptera_data\train\ants\0013035.jpg"

# 使用PIL的Image类打开图像文件
# img是一个PIL图像对象,它代表我们加载的图片
img = Image.open(img_path)

# 创建一个SummaryWriter实例,用于记录TensorBoard日志
# "logs"是存储日志文件的目录
writer = SummaryWriter("logs")

# 定义一个将图像转换为Tensor的转换操作
# ToTensor会将图像转换为一个PyTorch的张量(即多维数组),并将像素值从0-255缩放到0-1
tensor_trans = transforms.ToTensor()

# 将PIL图像转换为Tensor格式
# tensor_img现在是一个包含图像数据的张量,适用于PyTorch模型和TensorBoard可视化
tensor_img = tensor_trans(img)

# 将Tensor格式的图像添加到TensorBoard
# "Tensor_img"是该图像的标签,用于区分不同的图像数据
writer.add_image("Tensor_img", tensor_img)

# 关闭SummaryWriter,确保所有日志数据被写入文件
writer.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tt555555555555

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值