当前位置: 首页 > news >正文

PyTorch深度学习快速入门——P1-P13

环境配置

  • Anaconda,创建conda create -n pytorch python=3.12,使用conda activate pytorch切换到环境。
  • 安装pytorchconda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia,使用import torchtorch.cuda.is_available()查看cuda是否可用。

编辑器选择

  • 之前一直用的vscodepython,但看了视频之后发现pycharm真好用:
  • python console这里可以直接查看变量及其属性
    在这里插入图片描述
  • structure这里能查看方法
    在这里插入图片描述
  • terminal是终端
    在这里插入图片描述

快捷键

  • 当报错的时候移到那里,alt+enter快捷修复,没导入包的时候好用
    在这里插入图片描述

  • 想查看属性和方法的时候移过去按住ctrl,点击,即可跳转
    在这里插入图片描述

  • 想查看方法要输入什么参数的时候ctrl+P
    在这里插入图片描述

两大法宝函数dir和help

  • dir:列出所有属性和方法
    在这里插入图片描述
  • help:查看具体用法(也可以用??
    在这里插入图片描述

jupyter notebook

  • pytorch环境中pip install jupyter notebook安装了jupyter notebook,但没有添加环境变量不一定找得到,使用python -m jupyter notebook自动找到适合当前环境的notebook,细粒化程度高。

Dataset

使用PTL读取图片,演示了一下Dataset的做法,继承了Dataset之后实现__getitem____len__方法,图片文件加目录为
在这里插入图片描述

from torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset):def __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)def __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")
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的使用

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Imagewriter = SummaryWriter("logs")
image_path = "data/train/bees_image/85112639_6e860b0469.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)writer.add_image("test", img_array, 2, dataformats='HWC')
# y = x
for i in range(100):writer.add_scalar("y=2x", 3 * i, i)writer.close()

terminal输入以下指令查看tensorboard,可以自己定义文件夹名和端口号:
tensorboard --logdir=logs --port=6007
在这里插入图片描述

Transforms的一些用法

  • P9.transforms.py
from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter# python的用法 -》 tensor数据类型
# 通过 transforms.ToTensor去解决两个问题
# 2. 为什么我们需要Tensor数据类型img_path = "data/train/ants_image/5650366_e22b7e1065.jpg"
img = Image.open(img_path)writer = SummaryWriter("logs")# 1. transforms该如何使用(python)
# 实例化ToTensor
tensor_trans = transforms.ToTensor()
# 调用实例,transforms.ToTensor的call方法
tensor_img = tensor_trans(img)print(tensor_img)writer.add_image("tensor_img", tensor_img)writer.close()# 使用opencv读图片
# import cv2
# cv_img = cv2.imread(img_path)

P10.UsefulTransforms.py

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformswriter = SummaryWriter("logs")
img = Image.open("data/train/bees_image/16838648_415acd9e3f.jpg")
print(img)# ToTensor使用
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("Totensor", img_tensor)# Normalize使用
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize ([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize", img_norm)# Resize使用
print(img.size)
trans_resize = transforms.Resize((512, 512))
img_resize = trans_resize(img)
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("Resize", img_resize, 0)
print(img_resize)# Compose - resize - 2
trans_resize_2 = transforms.Resize(512)
# PIL -> PIL -> tensor
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])
img_resize_2 = trans_compose(img)
writer.add_image("Resize", img_resize_2, 1)# RandomCrop
trans_random = transforms.RandomCrop((200, 300))
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):img_crop = trans_compose_2(img)writer.add_image("RandomCrop", img_crop, i)writer.close()

均是在利用transforms处理图片,然后用TensorBoard查看中间结果。

一些数据集的使用代码

import torchvision
from torch.utils.tensorboard import SummaryWriterdataset_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor()
])
train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, transform=dataset_transform, download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=dataset_transform, download=True)# print(test_set[0])
# print(test_set.classes)
#
# img, target = test_set[0]
# print(img)
# print(target)
# print(test_set.classes[target])
# img.show()# print(test_set[0])writer = SummaryWriter("p10")
for i in range(10):img, target = test_set[i]writer.add_image("test_set", img, i)writer.close()

Pycharm的断点失灵

这个问题还没解决,不知道为什么断点无效,错误信息如下:
在这里插入图片描述
run是没问题的,但不知道为什么debug不行。

本文参考小土堆教程视频。

相关文章:

  • 【python006】miniconda3环境搭建(非root目录,最近更新中)
  • Windows Presentation Foundation(WPF)要点总结
  • 大数据之Hive函数大全
  • 阿里云数据库 SelectDB 版全面商业化,开启现代化实时数据仓库的全新篇章
  • 工具方法 - 如何在网上找资料
  • 领导VS管理:技术团队掌舵者的双重角色解析
  • 贪心-leetcode402.移掉 K 位数字-XMUOJ符文序列
  • 算法思想汇总
  • 这样的直男程序员,活该你单身一万年!
  • 夜雨触花感怀
  • Git总结超全版
  • Vue-前端自动化部署方案-scp2(实战版)
  • DolphinScheduler 3.3.0版本更新一览
  • AI大模型探索之路-训练篇25:ChatGLM3微调实战-基于LLaMA-Factory微调改造企业级知识库
  • OceanBase数据库诊断调优,与高可用架构——【DBA从入门到实践】第八期
  • php的引用
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS中外联样式表代表的含义
  • ES6系列(二)变量的解构赋值
  • EventListener原理
  • HTML-表单
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java,console输出实时的转向GUI textbox
  • Java读取Properties文件的六种方法
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • mysql 5.6 原生Online DDL解析
  • MySQL-事务管理(基础)
  • Odoo domain写法及运用
  • Python爬虫--- 1.3 BS4库的解析器
  • rabbitmq延迟消息示例
  • Spring Cloud Feign的两种使用姿势
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • sublime配置文件
  • Twitter赢在开放,三年创造奇迹
  • vagrant 添加本地 box 安装 laravel homestead
  • 官方解决所有 npm 全局安装权限问题
  • 汉诺塔算法
  • 技术胖1-4季视频复习— (看视频笔记)
  • 简单易用的leetcode开发测试工具(npm)
  • 力扣(LeetCode)21
  • 排序算法之--选择排序
  • 使用权重正则化较少模型过拟合
  • 试着探索高并发下的系统架构面貌
  • 新书推荐|Windows黑客编程技术详解
  • 学习笔记TF060:图像语音结合,看图说话
  • 由插件封装引出的一丢丢思考
  • 通过调用文摘列表API获取文摘
  • ​补​充​经​纬​恒​润​一​面​
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #Lua:Lua调用C++生成的DLL库
  • $.ajax中的eval及dataType
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (4)logging(日志模块)
  • (pojstep1.1.2)2654(直叙式模拟)