小土堆pytorch

anaconda安装

pip list 可以看有哪些package包

nvidia-smi查看显卡的状态

安装pytorch

检验pytorch是否安装成功,以及是否pytorch是否可以使用gpu。

(1)查看conda版本

      conda --version 或 conda -V

(2)更新conda(将conda自身更新到最新版本)

      conda update conda

(3)创建虚拟环境

      conda create -n res python=3.7

(4)激活虚拟环境

      conda activate res

(5)退出虚拟环境

      conda deactivate

(6)删除虚拟环境

      conda remove -n env_name --all 或 conda remove --name env_name --all

(7)列出所有虚拟环境

      conda env list 或 conda info --envs

(8)列出当前环境的所有包

       conda list

(9)安装第三方包

      conda install dill 或 pip install dill

(10)卸载第三方包

      conda uninstall dill 或 pip uninstall dill

dir():能让我们知道工具箱以及工具箱的分隔区有什么东西

help():能让我们知道每个工具是如何使用的,工具的使用方法

 DataSet类

import os
from torch.utils.data import Dataset
import torchvision
from PIL import Image'''
demo1:使用PIL打开一个图片
windows下所有的绝对路径都要把\换成\\
不然就会报错:
OSError: [Errno 22] Invalid argument: 'D:\\pycharm download\torch\\dataset\train\x07nts\x013035.jpg'
'''
# img_path = "D:\\pycharm download\\torch\\dataset\\train\\ants\\0013035.jpg"
# img = Image.open(img_path)
# img.show()'''
demo2:使用os.listdir打开一列图片
输出:
['0013035.jpg', '1030023514_aad5c608f9.jpg', '1095476100_3906d8afde.jpg', '1099452230_d1949d3250.jpg', '116570827_e9c126745d.jpg', '1225872729_6f0856588f.jpg', '1262877379_64fcada201.jpg', '1269756697_0bce92cdab.jpg', '1286984635_5119e80de1.jpg',
'''
# dir_path = "dataset/train/ants"
# img_path_list = os.listdir(dir_path)
# print(img_path_list)'''
demo3:实现自己的dataset类
继承的类,必须实现父类的所有接口/重写方法
继承dataset就是要实现/重写__init__  __getitem__
'''
# class MyData(Dataset):
#
#     def __init__(self):
#         pass
#
#     def __getitem__(self, item):
#         passclass MyData(Dataset):def __init__(self, root_dir, label_dir):# self就是把root dir变成一个class中全部def都可以使用的全局变量# 设root dir=dataset/trainself.root_dir = root_dir# 设label dir=antsself.label_dir = label_dirself.path = os.path.join(self.root_dir, self.label_dir)# if label dir = ants, then path=dataset/train/ants# os.listdir could list all ants img 的名字 如0013035.jpg# img path是一个listself.img_path = os.listdir(self.path)def __getitem__(self, idx):"""对MyData对象使用索引操作就会自动来到这个函数下边,双下划线是python中的魔法函数:param idx::return:"""img_name = self.img_path[idx]# 名字是0013035.jpg的图片的路径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, label# 再写一个获取数据集长度的魔法函数def __len__(self):return len(self.img_path)'''
demo4:获取蚂蚁数据集dataset
'''
root_dir = "./dataset/train"
label_dir = "ants"
ants_dataset = MyData(root_dir, label_dir)
# print(ants_dataset[0])
# # output:(<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=768x512 at 0x28C66665EE0>, 'ants')
# img, label = ants_dataset[0]
# img.show()
# print(label)'''
demo5:再来获取蜜蜂的数据集
'''
root_dir = "./dataset/train"
label_dir = "bees"
bees_dataset = MyData(root_dir, label_dir)'''
demo6:dataset数据集拼接
'''
train_dataset = ants_dataset + bees_dataset

 TensorBoard的使用展示数据

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from tu_demo1 import MyData'''
demo1:summary writer的介绍
Writes entries directly to event files in the log_dir to be consumed by TensorBoard. 
SummaryWriter把实体直接写入一个目录里边,这个目录可以被TensorBoard读取,然后画成图
SummaryWriter常用只有1个参数log_dir
Example:传入log dir参数writer = SummaryWriter("my_experiment")# folder location: my_experiment,比如后边常写的logscomment参数可以给log dir后边加后缀writer = SummaryWriter(comment="LR_0.1_BATCH_16")# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/#                  runs/May04_22-14-54_s-MacBook-Pro.local是默认的目录
'''
# writer = SummaryWriter("logs")# writer.add_image()
# writer.add_scalar()# writer.close()
tensorboard --logdir=logs --port=6007#在指定的端口打开summarywrite类目录'''
demo2:写标量数据
tag (string): Data identifier 标识符,表名
scalar_value (float or string/blobname): Value to save  y轴
global_step (int): Global step value to record          x轴
'''
# writer = SummaryWriter("logs")
#
# for i in range(100):
#     writer.add_scalar("y=x summary", i, i)
#     writer.add_scalar("y=2x summary", 2*i, i)
#
# writer.close()'''
demo3:写图片数据
tag (string): Data identifier
img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
global_step (int): Global step value to record
写图片,要求图片必须是上面的三种类型,我们使用numpy来改变图片数据类型使用numpy array会报错,因为你的图片维度顺序不符合writer的要求,报错如下:
TypeError: Cannot handle this data type: (1, 1, 512)
改正如下,使用dataformats='HWC'向writer说明我们的三位顺序是HWC:
writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')
可以在控制台简单运行一下代码print(img_array.shape),就知道顺序了
'''
# writer = SummaryWriter("logs")
#
# image_path = "dataset/train/ants/0013035.jpg"
# img_pil = Image.open(image_path)
# img_array = np.array(img_pil)
#
# # writer.add_image("img test", img_array, 1)
# writer.add_image("img test", img_array, 1, dataformats='HWC')
# writer.close()'''
demo4:练习使用图片写入
'''
# 获取数据集
root_dir = "./dataset/train"
label_dir = "ants"
ants_dataset = MyData(root_dir, label_dir)
# 写入board
step = 1
writer = SummaryWriter("logs")
for img, label in ants_dataset:img_array = np.array(img)print(type(img_array), img_array.shape)print("正在写入第{}张图片".format(step))writer.add_image("ants images", img_array, step, dataformats='HWC')step = step + 1
# 最后一定关闭writer
writer.close()
# 第117张图片的shape是(300,300)没有第三维数据,写不进去,会报错,但是board能存116个
# 有解决办法的欢迎联系我

transforms是用来对图片进行处理

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms'''
demo1:tosensor简单使用 
tosensor:
Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor
example:pil --> tensortensor([[[0.3137, 0.3137, 0.3137,  ..., 0.3176, 0.3098, 0.2980],[0.3176, 0.3176, 0.3176,  ...,
'''
# 获取pil类型图片
img_path = "dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
# 创建需要的transforms工具,并给工具起名字
tensor_trans = transforms.ToTensor()
# 使用工具,根据工具需要的参数自行选择传递
tensor_img = tensor_trans(img)#ctrl+p查看函数需要的参数
print(tensor_img)"""
demo2:为什么需要tensor数据类型
因为tensor包含了一些属性是计算神经网络是必不可少的
grad:梯度
device:设备
is CUDA:
requires grad:保留梯度
"""
# tensor_img.grad = 0
# tensor_img.requires_grad = False'''
demo3:使用tensor数据类型写入board
'''
writer = SummaryWriter("logs")
writer.add_image('tensor img', tensor_img, 1)
writer.close()
执行tensorboard --logdir=logs --port=6007命令#在指定的端口打开summarywrite类目录

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
class Person:def __call__(self,name):print("__call__"+name)def hello(self,name):print("hello"+name)
person=Person()
person("zhangsan")
person.hello("list")'''
demo1:魔法函数
实例化一个对象之后,如果这个对象可以不用.方法名,而是可以直接传参数,那说明这个对象就有一个对应的魔法函数
比如getitem call len
'''
img_path = "dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
writer = SummaryWriter('logs')'''
demo2:compose的用法
compose就是一个指定一个transform操作序列,定义了一条加工流水线
Example:>>> transforms.Compose([>>>     transforms.CenterCrop(10),>>>     transforms.PILToTensor(),>>>     transforms.ConvertImageDtype(torch.float),>>> ])
''''''
demo3:normalize的用法
计算方法:output[channel] = (input[channel] - mean[channel]) / std[channel]
说人话:该像素上的值减去均值,再除以方差
'''
trans_norm = transforms.Normalize([5, 0.5, 0.5], [0.5, 0.5, 0.5])//因为rgb是三个通道,所以需要三个均值和三个标准差
trans_tensor = transforms.ToTensor()
img_tensor = trans_tensor(img)
img_norm = trans_norm(img_tensor)writer.add_image('norm img', img_norm)
# 在board中可以看到norm之后图片变化很大,因为故意设的均值很大'''
demo4:resize的用法
Resize the input image to the given size.
注意如果给了一个int就是变为正方形,给(H,W)才是H W
resize不会改变图片的数据类型
'''
#img PIL->img_resize PIL
trans_resize = transforms.Resize((512, 500))
img_resize = trans_resize(img)
#img_resize PIL->img_resize tensor
img_resize = trans_tensor(img_resize)
print(img_resize)'''demo5:random crop
随机剪一个指定尺寸的新图片,循环十次。
'''
trans_randomcrop = transforms.RandomCrop(500)
trans_compose = transforms.Compose([trans_randomcrop,trans_tensor
])
for i in range(10):img_crop_tensor = trans_compose(img)writer.add_image('crop tensor', img_crop_tensor, i)writer.close()

dataset处理以及dataloader

import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms'''
demo1:使用torchvision获取数据集
前面是数据的类型,后面是图片的标签 数字对应类别
(<PIL.Image.Image image mode=RGB size=32x32 at 0x22F00A48F10>, 6)
类别:
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
'''
# train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, download=True)#root="./dataset"指的是下载位置
# test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, download=True)
# print(train_set[0])#打印图片信息
# print(train_set.classes)#打印数据集的类别
# img, target = train_set[0]#返回图片数据img和类别下标target
# print(train_set.classes[target])
# img.show()#展示图片'''
demo2:使用compose对数据集做transform操作
'''
dataset_trans = transforms.Compose([torchvision.transforms.ToTensor()
])#只对数据集进行totensor的操作
train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, transform=dataset_trans, download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=dataset_trans, download=True)writer = SummaryWriter('logs')
for i in range(10):img, target = train_set[i]writer.add_image('test torchvison compose', img, i)writer.close()
​
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms'''
demo1:使用torchvision获取数据集
前面是数据的类型,后面是图片的标签 数字对应类别
(<PIL.Image.Image image mode=RGB size=32x32 at 0x22F00A48F10>, 6)
类别:
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
'''
# train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, download=True)#root="./dataset"指的是下载位置
# test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, download=True)
# print(train_set[0])#打印图片信息
# print(train_set.classes)#打印数据集的类别
# img, target = train_set[0]#返回图片数据img和类别下标target
# print(train_set.classes[target])
# img.show()#展示图片'''
demo2:使用compose对数据集做transform操作
'''
dataset_trans = transforms.Compose([torchvision.transforms.ToTensor()
])#只对数据集进行totensor的操作
train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, transform=dataset_trans, download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=dataset_trans, download=True)writer = SummaryWriter('logs')
for i in range(10):img, target = train_set[i]writer.add_image('test torchvison compose', img, i)writer.close()​
​import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms'''
demo1:dataloader的简单使用
batch size:loader能每次装弹4枚进入枪膛,或者理解每次抓四张牌
shuffle:每次epoch是否打乱原来的顺序,就像打完一轮牌后,洗不洗牌
drop last:最后的打他不够一个batch 还要不要了。比如100张图片其中每3张是一个batch,会余下一张图片。选择true就会被舍去,选择false最后一个batch就会是1张图片
'''
train_set = torchvision.datasets.CIFAR10("./dataset", train=True, transform=torchvision.transforms.ToTensor(), download=True)
test_set = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)train_loader = DataLoader(dataset=train_set, batch_size=4, shuffle=True, num_workers=0, drop_last=False)
test_loader = DataLoader(dataset=test_set, batch_size=4, shuffle=True, num_workers=0, drop_last=False)
#测试数据集中第一张图片集target
img, target = test_set[0]
print(img.shape)
print(target)
# 使用board可视化
writer = SummaryWriter("logs")
step = 0
for data in test_loader:imgs, targets = data# print(imgs.shape)#torch.size([4,3,32,32])也就是4张图片3通道32*32# print(targets)# 这里如果你用add image会报错,因为这个方法只能一次写一个图片,你必须换add images方法来写入带有批处理的图片# writer.add_image("test set loader", imgs, step)writer.add_images("test set loader", imgs, step)step = step + 1writer.close()

import torch
from torch import nn"""
demo1:写一个最基本的神经网络都要哪些骨头
两个骨头就是骨架:__init__ forward
"""
class Tudui(nn.module):def __init__(self):super(Tudui, self).__init__()#调用父类的初始化函数def forward(self, input):#定义神经网络的运算步骤output = input + 1return output
tudui = Tudui()
x = torch.tensor(1.0)
output = tudui(x)
print(output)
"""
class Model(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv2d(1, 20, 5)self.conv2 = nn.Conv2d(20, 20, 5)def forward(self, x):#x表示的是输入x = F.relu(self.conv1(x))#x经过一次卷积外加一次非线性处理return F.relu(self.conv2(x))#x再经过一次卷积外加一次非线性处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/415283.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlite数据插入效率

一、程序效率测试 时间相关接口&#xff1a; int gettimeofday(struct timeval*tv, struct timezone *tz); 功能&#xff1a;得到从1970年1月1日0时0分0秒到现在的秒数。<可以利用该函数来计算一个程序的运行时间&#xff0c;只需在程序前后调用该函数&#xff0c;…

计算机网络概述(分组延时、丢失和吞吐量)

目录 分组丢失和延时是怎样发生的&#xff1f; 四种分组延时 节点延时 排队延迟 分组丢失 吞吐量 吞吐量&#xff1a;互联网场景 分组丢失和延时是怎样发生的&#xff1f; 在路由器缓冲区的分组队列 分组到达链路的速率超过了链路输出的能力分组等待排队到队头、被传输…

基于.NET6的WPF基础总结(上)

目录 一.常用属性介绍 二、 程序退出方式 三、布局样式 3.1 Panel的附加属性ZIndex 3.2 Grid(网格)布局 3.3 UniformGrid&#xff08;均分布局&#xff09; 3.4 StackPanel&#xff08;堆积面板&#xff09; 3.5 WrapPanel&#xff08;换行面板&#xff09; 3.6 Doc…

什么是I2C总线?

1.什么是I2C&#xff1f; 1.1 I2C的由来 在电视机内部电路中&#xff0c;众多功能需要用到许多集成电路IC来实现&#xff0c;包括主控器件微控制器和众多外围设备器件。这些器件相互之间要传递数据信息&#xff0c;那么就需要用导线相互连接&#xff0c;如此众多IC器件的互连&…

linux下cpu多核运行程序以及运行时间统计

一、多核心运行程序 在linux下我们可以指定线程或者进程运行在指定的cpu核心上&#xff0c;操作方法如下&#xff1a; 1&#xff09;运行进程指定cpu核心 taskset -c 2 ./app //-c指定运行的cpu核心号&#xff0c;从0计数&#xff0c;查看效果如下&#xff1a; 2&#xff09…

两句话讲清楚离线安装docker镜像

两句话讲清楚离线安装docker镜像 文章目录 两句话讲清楚离线安装docker镜像写在前面解决方案 写在前面 背景&#xff1a;银河麒麟、离线环境&#xff0c;装吧&#xff0c;一装一个不吱声。 准备&#xff1a; 首先&#xff0c;你要有个docker&#xff0c;安装好了才能搞镜像是不…

C++:构造函数与析构函数

一.类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数&#xff0c;如下图&#xff1a; 其中最重要的就是我们表格中的前四个函数&#xff0c;本篇文章我们主要介绍前三个。默认成员函数很重要&#xff0c;也比较复杂…

下载xhsell连接Linux系统

一、下载安装xshell 1、下载 免费版的网址&#xff1a;家庭/学校免费 - NetSarang Website 2、安装 选择自己想要下载的文件夹位置 创建一个新的文件夹即可 不想注册可以直接选择后来先进行试用 二、连接Linux虚拟机 1、点击加号新建会话 2、输入你要连接的虚拟机的IP地址…

4、Django Admin对自定义的计算字段进行排序

通常&#xff0c;Django会为模型属性字段&#xff0c;自动添加排序功能。当你添加计算字段时&#xff0c;Django不知道如何执行order_by&#xff0c;因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序&#xff0c;则必须告诉Django需要排序的内容。你可以通过在…

【综合架构】Part 5.2 Ansible

使用设备&#xff1a;管理设备-m01-10.0.0.61 1 概述 自动化运维工具&#xff1a;可实现批量管理、批量分发、批量执行、维护... Ansible 是由 Python语言 所编写 2 管理架构 Inventory 主机清单&#xff1a;被管理主机的ip列表、分类。ad-hoc模式&#xff1a;命令行批量管理…

迁移学习之领域偏移(domain shift)

实际应用中很多任务的数据的标注成本很高&#xff0c;无法获得充足的训练数据&#xff0c;这种情况可以 使用迁移学习&#xff08;transfer learning)。假设 A、B 是两个相关的任务&#xff0c;A 任务有很多训练数 据&#xff0c;就可以把从A任务中学习到的某些可以泛化知识迁移…

《信息技术 云计算 边缘云通用技术要求》国家标准发布,九州未来参编

日前&#xff0c;2024年第17号国家标准公告发布&#xff0c;由全国信标委云计算标准工作组组织制定、九州未来作为行业专家单位参编的《信息技术 云计算 边缘云通用技术要求》国家标准正式获批发布。 边缘云作为云计算技术的有效补充和拓展&#xff0c;能够实现将云计算能力拓展…

java常用类

目录 1 String类 1字符串的构造方法&#xff1a; 2.常量池 3 .字符串的比较 1 equals 2 equalsIgnorecase 3.字符串长度&#xff1a; 4.拼接字符串 5.获取单个字符&#xff1a; 6.子字符串的索引&#xff08;首个&#xff09; 7.截取字符串 8.将String的转换为数组&…

设计模式 -- 迭代器模式(Iterator Pattern)

1 问题引出 编写程序展示一个学校院系结构&#xff1a;需求是这样&#xff0c;要在一个页面中展示出学校的院系组成&#xff0c;一个学校有多个学院&#xff0c; 一个学院有多个系 传统方式实现 将学院看做是学校的子类&#xff0c;系是学院的子类&#xff0c;这样实际上是站在…

服务器数据恢复—如何应对双循环RAID5阵列的数据丢失问题?

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由7块硬盘组建的RAID5阵列&#xff0c;存储中还有另外3块盘是raid中掉线的硬盘&#xff08;硬盘掉线了&#xff0c;管理员只是添加一块的新的硬盘做rebuild&#xff0c;并没有将掉线的硬盘拔掉&#xff09;。整个RAID5阵列…

F12控制台输入警告?

信息如下&#xff1a; Warning: Don’t paste code into the DevTools Console that you don’t understand or haven’t reviewed yourself. This could allow attackers to steal your identity or take control of your computer. Please type ‘allow pasting’ below and …

Type-C接口诱骗取电快充方案

Type-C XSP08Q 快充协议芯片是一种新型电源管理芯片&#xff0c;主要负责控制充电电流和电压等相关参数&#xff0c;从而实现快速充电功能。Type-C XSP08Q快充协议是在Type-C接口基础上&#xff0c;加入了XSP08Q协议芯片的支持&#xff0c;很大程度上提升了充电速度。 正常情况…

css实现卡片右上角的状态

1、成品展示 2、html部分 <div class"itemBox"><div class"status">{{ statusList[item.status] }}</div> </div> 3、css部分 .itemBox {position: relative;overflow: hidden; } .status {height: 25px;line-height: 25px;bac…

【实战教程】用 Next.js 和 shadcn-ui 打造现代博客平台

你是否梦想过拥有一个独特、现代化的个人博客平台&#xff1f;今天&#xff0c;我们将一起动手&#xff0c;使用 Next.js 和 shadcn-ui 来创建一个功能丰富、外观精美的博客系统。无论你是刚接触 Web 开发&#xff0c;还是经验丰富的程序员&#xff0c;这个教程都将带你step by…

Linux网络编程 --- Socket编程

前言 首先看看TCP/IP网络协议和在我们计算机系统层次中的对应关系。 socket的位置 网络通信的本质就是贯穿网络协议层的过程。 局域网数据的封装和解包过程 逻辑上我们认为同层协议之间通信 几乎任何层的协议都会提供一种解包和分用的功能。 几乎任何层的协议&#xff…