第一章  数据加载

Dataset:提供一种方式去获取数据及其标签,并告诉我们有多少数据

Dataloader:为后面的网络提供不同的数据形式

class MyData(Dataset):               #创建一个MyData类,去继承Datasetdef __init__(self,root_dir,label_dir):         #创建全局变量,比如数据的路径self.root_dir = root_dirself.label_dir = label_dir             #self.设置全局变量self.path = os.path.join(self.root_dir,self.label_dir)  #得到的是拼接的路径self.img_path = os.listdir(self.path)    #获得path路径下的所有文件(名字),是一个数组def __getiem__(self,index):       #获得图片img_name = self.img_path[index]   #获得数组中的一个(文件名),不是路径img_item_path = os.path.join(self.root_dir,self.label_dir,img_name)#再拼接上文件名label = self.label_dirreturn img,labeldef __len__(self):return len(self.img_path)    #返回一个长度#使用
root_dir = "database/train"
data_label_dir = "data"
data_dataset = MyDate(root_dir,data_label_dir)
img,label = data_dataset[0]    #第一张数据
img.show()     #放出来

第二章  tensorboard的使用

主要用于看loss的变化

writer = SummaryWriter("logs")    #把文件存储在logs文件夹下#有三种主要的使用
writer.add_image()    #用来把图片显示在ten里
writer.add_scalar()   #显示函数
writer.close()#在终端输入命令,复制地址可打开。
#tensorboard --logdir=logs    其中logdir=事件文件所在文件夹名
#tensorboard --logdir=logs --port=6007    指定端口

其中add_image()读取数据的类型必须是 torch.Tensor,  numpy.array,  或者是string/blobname类型,故 要进行数据类型转换。

opencv-python是最常用来打开numpy类型的包

import numpy as np
from PIL import Imageimage_path = '地址'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)      #先获得PIL数据类型
print(type(img_array))

第三章   transforms

用来对图像进行变换,也就是输入一个特定格式的图片,经过transforms的函数后输出我们想要的图片结果

totensor数据类型:

img_path = '路径'
img = Image.open(img_path)
print(img)   #PIL类型的图片tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)   #将PIL转换为tensor数据类型

Resize改变尺寸:

t_resize = transforms.Resize((512,512))
img_size = t_resize(img)

第四章  数据集的加载

转换为tensor数据类型

import torchvisiondataset_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor()
])

五   神经网络的搭建

import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module):  #相当于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):      #神经网络经过forward得到一个输出(前向传播)x = F.relu(self.conv1(x))    # x经过一次卷积conv1,再经过一次非线性relureturn F.relu(self.conv2(x))    #得到的x再经过一次conv2再经过一次relu

卷积:用卷积核在输入图像上对应相乘再相加。

import torch
input = torch.tensor([[1,2,0,3,1],    #[[表示是二维矩阵   #输入图像[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]],dtype=torch.float32)#把lang型的1变成浮点型的1.0kernel = torch.tensor([[1,2,1],      #卷积核[0,1,0],[2,1,0]])print(input.shape)              # torch.Size([5,5])
input = torch.reshape(input,(1,1,5,5))   # 1-bachsize为1;1- 平面所以通道为1;(5,5)H,W
kernel = torch.reshape(kernel,(1,1,3,3))#卷积
import torch.nn.functional as Foutput = F.conv2d(input,kernel,stride = 1)     #stride = 1 走一步 padding输入图片填充
print(output)   #结果就是对应相乘相加得到的矩阵

conv2d的输入要求:input(minibatch,in_channels,H,W)四个参数,而图片的shape只输出(H,W)因此采用reshape函数

class Module(nn.Module)def __init__(self):super(Module,self).__init__()     #初始化父类self.conv1 = Conv2d(in_channels=3,out_channels=6,   #3-彩色,6-自己想要的层kernel_size=3,stride=1,padding=0) #3-卷积核3✖3def forward(self,x):x = self.conv1(x)return x          #想得到输出x,所以返回xm = Module()
print(m)

六      最大池化

最大池化是指,对应相乘的最大值(不相加)。最大池化的目的是保留输入的特征,同时又把数据量进行减小。

class Module(nn.Module)def __init__(self):super(Module,self).__init__()     #初始化父类self.maxpool1 = MaxPool2d(kernel_size = 3,ceil_mode = True) #最大池化#ceil_mode=True 卷积核移动的时候边边也算def forward(self,input):output = self.maxpool1(input)return x module = Module()
output = module(input)    #把输入的数组传进去#如何把图应用在网络里
dataset = torchvision.datasets.CIFAR10('../data',train=False,download=True,transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset,batch_size = 64)   #按每次64张输入图片for data in dataloader:   imgs,targets = dataout = module(imgs)

七       非线性激活

非线性变换目的是为网络引入一些非线性特征,因为非线性越多,网络才能训练出符合各种曲线特征的模型。如果大家都是线性的话,那模型的泛化能力将不够好

nn.ReLU

class Module(nn.Module)def __init__(self):super(Module,self).__init__()     #初始化父类self.relu1 = ReLU()               #ReLU函数表示 小于0的为0,大于0的线性输出def forward(self,input):output = self.relu1(input)return output

ReLU对图像的作用不是很明显,Sigmoid函数明显一些。

八      正则化

可以加快神经网络的训练速度。用的少

Pytorch 框架相关推荐

  1. PyTorch框架:(4)如何去构建数据

    接PyTorch框架:(3) 1.最基本的方法 (1)使用模块 模块1:TensorDataset.模块2:DataLoader 自己去构造数据集,然后一个batch一个batch的取数据,自己去写构 ...

  2. PyTorch框架:(3)使用PyTorch框架构构建神经网络分类任务

    目录 0.背景 1.分类任务介绍: 2.网络架构 3.手写网络 3.1.读取数据集 3.2.查看数据集 3.3将x和y转换成tensor的格式 3.4.定义model 0.背景 其实分类和回归本质上没 ...

  3. PyTorch框架:(1)基本处理操作

    目录 1.PyTorch框架介绍 2.安装Pytorch 2.1.CPU版本的安装命令: 2.2.GPU版本的安装命令: 2.2.1.安装CUDA 3.基本使用方法 4.Pytorch中的自动求导机制 ...

  4. Pytorch框架的深度学习优化算法集(优化中的挑战)

    个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net Py ...

  5. Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构

    Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet.AlexNet.VGG.NIN.GoogleNet.ResNet)--从代码认知CNN经典架构 目录 CNN经典算 ...

  6. 【视频课】永久免费!5小时快速掌握Pytorch框架入门及实战

    前言 PyTorch是深度学习的主流框架之一,新手入门相对容易.为了帮助初学者解决PyTorch入门及实践的问题,有三AI推出<深度学习之PyTorch-入门及实战>课程,课程将算法.模型 ...

  7. 【CV实战】年轻人的第一个深度学习图像分割项目应该是什么样的(Pytorch框架)?...

    我们上次给新手们介绍了第一个合适入门的深度学习CV项目,可阅读[CV实战]年轻人的第一个深度学习CV项目应该是什么样的?(支持13大深度学习开源框架),本次我们再给大家介绍一个新的任务,图像分割,包括 ...

  8. Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现

    因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...

  9. PyTorch框架学习二十——模型微调(Finetune)

    PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...

  10. PyTorch框架学习十九——模型加载与保存

    PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...

最新文章

  1. Android组件化初探
  2. 新一代Hologres实时数仓大揭秘
  3. 大学计算机上机实验指导与测试pdf,4大学计算机基础上机实验指导与习题--习题.pdf...
  4. 前端笔记-webpack加载前端资源(图片,css等)
  5. Python学习笔记(三)数据类型--Number类型
  6. JavaBeginnersTutorial 中文系列教程·翻译完成
  7. [转载]java中try 与catch的使用
  8. 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
  9. 学习笔记_Java_day12_Cookie
  10. Luogu1502 窗口的星星
  11. 简约个性个人简历自我介绍PPT模板
  12. 均值漂移(Meanshift)算法
  13. WP应用程序磁贴设置
  14. potentially fixable with the `--fix` option.
  15. 用灭点法提取的深度图
  16. Apache Hudi调研小记
  17. MCV模型流程图整理
  18. Qt学习之界面UI编程应用
  19. win7计算机亮度怎么调节,win7系统屏幕亮度怎么修改调整
  20. lol进服务器时文件损坏,LOL文件损坏怎么修复

热门文章

  1. 经验:作为IT人,如何靠副业赚到第一桶金!
  2. 航天晨光:永中DCS与原有OA系统整合,文件阅览效率大幅提升!
  3. MATLAB中clc命令详解
  4. jdk8官方下载路径
  5. Linux 合并两个文件
  6. 设计电商平台优惠券系统
  7. TensorRT - 扩展TensorRT C++API的模型输入维度,增加Dims5,Dims6,Dims7,Dims8
  8. 中通快递信息怎么批量导出到表格呢?
  9. 王垠四十行代码mark
  10. 什么是CTP程序化交易:系统入门