Python
文章平均质量分 72
放牛儿
走,去放牛
展开
-
基于CIFAR10的完整模型测试套路
利用已经训练好的模型,给其提供输入,对输出进行判断。CIFAR10有狗的分类,于是我们找一张狗的图片:png格式的图片有四个通道,除了RGB外,还有一个透明度通道,所以调用:image = image.convert('RGB')打印图片相关信息:from PIL import Imageimage_path = './imgs/img.png'image = Image.open(image_path)image = im...原创 2022-02-21 21:43:15 · 405 阅读 · 0 评论 -
基于CIFAR10的完整模型训练套路
首先准备数据集:train_data = torchvision.datasets.CIFAR10('./dataset', train=True, transform=torchvision.transforms.ToTensor(), download=True)#训练数据集test_data = torchvision.datasets.CIFAR10('./dataset', train=False, transform=torchvision.transforms.ToTensor(),原创 2022-02-21 19:13:12 · 2178 阅读 · 1 评论 -
利用GPU训练模型
利用.cuda()函数网络模型中,有三种变量可以调用.cuda(),分别是网路模型、数据(输入、标注)、损失函数,调用完需要返回。 以之前的一个网络为例:import torchimport torchvisionfrom torch import nnfrom torch.utils.data import DataLoaderdataset = torchvision.datasets.CIFAR10("./dataset", train=False...原创 2022-02-19 21:12:09 · 3155 阅读 · 0 评论 -
网络模型的保存和读取
先新建一个网络模型:import torchvisionvgg16 = torchvision.models.vgg16(pretrained=False)pretrained=False意思是该网络模型是初始没有经过训练的。方式1:保存数据:import torch torch.save(vgg16, 'vgg16_method1.pth')这种方式既保存了网络结构也保存了网络中的参数加载数据:import torchmodel = torc原创 2022-02-17 21:39:32 · 1283 阅读 · 0 评论 -
pytorch——现有网络模型的使用和修改
以VGG网络为例,在Docs中,选择图像相关的torchvision,左侧的torchvision.models是一些现成的网络模型,右侧是网络模型的一个分类,第一个便是和分类有关的模型。vgg最常用的就是vgg16和vgg19:参数pretrained如果为True,则模型中的参数使用现有的已经在ImageNet数据集中训练完成的,若为False,则参数没有经过任何训练,process若为True,则会显示一个下载进度条。...原创 2022-02-15 17:57:20 · 1572 阅读 · 0 评论 -
pytorch——优化器使用
使用步骤:建立一个优化器,对参数的每一个梯度清零,调用损失函数的反向传播(backward)求出每一个参数的梯度,最后对每一个参数进行调优。以随机最速下降法 (SGD)为例:参数params用来指明网络中需要优化的参数,lr为学习速率。准备数据集:dataset = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTenso...原创 2022-02-12 19:23:04 · 2602 阅读 · 0 评论 -
pytorch——损失函数
Loss用来做两件事,一是计算实际输出和目标之间的差距,二是为我们反向传播更新数据提供一个依据。首先查看L1Loss函数官方文档:有两种方式,一个默认的mean,求的是平均值,另一个sum,求的是和:import torchfrom torch.nn import L1Lossinput = torch.tensor([1, 2, 3], dtype=torch.float32)target = torch.tensor([1, 2, 5], dtype=torch.float32原创 2022-02-11 15:46:39 · 1105 阅读 · 0 评论 -
神经网络——cifar10网络搭建、Sequential使用
CIFAR 10 模型结构:通过图片可以知道,输入为3通道的32*32大小数据,第一步卷积,通过5*5的一个卷积核,得到32通道的32*32的大小,接着通过2*2的最大池化层得到32通道的16*16...得到64通道的4*4数据,经过flatten展开为1024个一行的数据,通过线性层得到隐藏层的64个数据,再经过一个线性层得到输出。第一层的卷积层,可以知道参数in_channels为3,out_channels为32,kernel_size为5,而大小32*32没有变化,则由官方文档的公式:原创 2022-02-06 11:48:12 · 2427 阅读 · 0 评论 -
神经网络——线性层
线性层参数 in_features 就是输入x,out_features 是线性层的输出是上图的g。x到g的关系式为:,其中的是权重,是偏置(参数bias为True时,才存在)。阅读官方文档可知,weight和bias都是从分布中采样初始化,经过训练得最终结果。在vgg16模型中,将224*224*3的图片转变为了1*1*4096的大小,经过训练,得到最终的1*1*1000的结果。我们也采取相同的方式:import torchimport torchvision...原创 2022-02-04 17:35:12 · 9246 阅读 · 0 评论 -
神经网络——非线性激活
非线性介绍非线性变换的主要目的就是给网中加入一些非线性特征,非线性越多才能训练出符合各种特征的模型。常见的非线性激活:ReLU:* 表示输入的形状可以任意在进行网络初始化时,发现ReLU有一个参数inplace:input = -1ReLU(input, inplace=True)input = 0input = -1output = ReLU(input, inplace = False)input = -1output = 0#inp...原创 2022-02-02 20:41:19 · 1906 阅读 · 0 评论 -
神经网络——最大池化
最大池化的目的在于保留原特征的同时减少神经网络训练的参数,使得训练时间减少。相当于1080p的视频变为了720p最大池化介绍池化层最常用的是下采样,其中参数:kernel_size:设置取最大值的窗口,类似于卷积层的卷积核,如果传入参数是一个int型,则生成一个正方形,边长与参数相同;若是两个int型的元组,则生成长方形。stride:步径,与卷积层不同,默认值是kernel_size的大小。padding:和卷积层一样,用法类似于kernel_size。dila...原创 2022-02-01 23:46:57 · 10958 阅读 · 0 评论 -
神经网络卷积层Conv2d的使用
in_channels是输入的图片的channel数;out_channels是输出的通道数;kernel_size用来设置卷积核的大小,卷积核的初值是某个分布中的采样,随着训练的进行,值是不断变化的;stride是步径,卷积核移动的格数;padding是输入的外围拼接的大小。out_channels取决于卷积核的数量,卷积核也有in_channels参数,该参数取决于需要进行卷积操作的数据的channels。例如,6*6*3的图片样本,使用3*3*3的卷积核,输入...原创 2022-01-27 20:22:58 · 4091 阅读 · 0 评论 -
神经网络基本骨架、结构的原理及使用
目录神经骨架的使用基本神经结构的使用神经骨架的使用首先我们进官网进行相关信息的查询:container(相当于一个骨架)之中有六个模块,最常用的是module模块,因为对所有神经网络提供了一个最基本的类。根据module的介绍,我们知道自己创建的model也需要继承该类 。from torch import nnclass Model(nn.Module): def __init__(self): supe...原创 2022-01-26 22:50:14 · 1409 阅读 · 0 评论 -
pytorch——Dataloader的使用
Dataset相当于数据集,而Dataloader顾名思义是一个装载数据集的一个工具,从dataset中取数据。先进入官网进行学习:创建一个数据集和一个dataloader:import torchvisionfrom torch.utils.data import DataLoader#准备一个测试集test_data = torchvision.datasets.CIFAR10(root="./dataset", train=False, trans...原创 2022-01-25 19:49:07 · 1844 阅读 · 0 评论 -
pytorch——torchvision中的数据集的使用
首先我们打开pytorch的官方网页比如我们打开其中的torchvision,我们可以看到其中有很多的数据集:其中有很多是我们常用的、用来学习的数据集。接着的torchvision.models是一些常见的神经网络:我们以CIFAR为例:root是存在或下载保存的路径;train如果是True,则作为训练集,否则是测试集;transform可以对数据集进行一个变化;download会设置下载数据集。import torchvisiontrain_set = tor...原创 2022-01-24 19:21:23 · 928 阅读 · 0 评论 -
pytorch——常见的Transforms
transforms相当于一个工具箱,里面的类(class)totensor、resize等相当于工具。图片经过工具的处理,就会得到我们想要的结果。首先我们查看transforms的源代码中的totensor函数:class ToTensor: """Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor. This transform does not support torchscript.def __call__(sel原创 2022-01-23 19:50:03 · 979 阅读 · 0 评论 -
pytorch——Tensorboard使用
目录add_scalar()函数add_image()函数 Tensorboard是常用的一种可视化的工具,我们对其中的SummaryWriter类进行调用。我们可以查阅其相关说明: 我们通常使用初始化函数中的第一个参数:文件的名称,也可以不对其进行配置,采用默认。add_scalar()函数使用其中的add_scalar函数,首先查阅说明:tag相当于图像的标题; scalar_value是要保存的数值,相...原创 2022-01-21 22:23:20 · 1316 阅读 · 0 评论 -
使用镜像下载库
pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple+包名下载很快。PS:使用pip下载时,可能应网络较差而超出默认时间,可以修改时间相应:pip --default-timeout=100 install 包名(Windows系统)pip --default-timeout=100 install -U 包名(Linux系统)...原创 2022-01-21 20:40:58 · 858 阅读 · 0 评论 -
pytorch——mnist手写数据识别
1、pytorch自带的数据集 pytorch中自带数据集由两个上层的API提供,分别是torchvision和torchtext。其中,torchvision提供了对照片数据处理相关的API和数据,数据所在位置:torchvision.datasets,比如torchvision.datasets.MNIST(手写数字照片数据);torchtext提供了对文本数据处理相关的API和数据,数据所在位置:torchtext.datasets,比如torchtext.datasets.IMDB...原创 2021-12-03 09:48:20 · 11358 阅读 · 10 评论 -
pytorch——数据加载
1、模型中使用数据加载器的目的 深度学习中,数据量通常是非常多、量非常大的,大量的数据,不可能一次性地在模型中进行向前的计算和反向传播,通常,我们会对整个数据进行随机的打乱数据,把数据处理成一个一个的batch,同时还会对数据进行预处理。2、数据集类2.1Dataset基类介绍 在torch中,提供了数据集的基类torch.utils.data.Dataset,继承这个基类,能够很快地实现对数据的加载。torch.utils.data.Data...原创 2021-11-29 17:22:13 · 1602 阅读 · 0 评论 -
pytorch——API实现线性回归
在pytorch中预设了一些更加灵活简单的对象,让我们来构造模型、定义损失、优化损失等1、nn.Module nn.Module是torch.nn提供的一个类,是pytorch中我们自定义网络的一个基类,在这个类中定义了很多的方法,使得我们在继承这个类的时候非常的简单。 当我们自定义网络的时候,有两个方法需要特别注意: 1、__init__需要调用super方法,继承父类的属性和方法。 ...原创 2021-11-27 17:31:20 · 1051 阅读 · 0 评论 -
pytorch——线性回归实现
我们使用一个自定义的数据,来使用torch实现一个简单的线性回归。假设我们的基础模型就是,其中,是参数,我们使用来构造数据,,所以最后通过模型应该能够得出的应该是分别接近3和0.8。1、准备数据 根据创建函数x = torch.rand([500,1])#创建一个500行1列的数据y_true = x * 3 + 0.82、通过模型构建y_predict 因为需要反向计算梯度,所以将requires_grad设置为Truew = to...原创 2021-11-25 23:52:49 · 349 阅读 · 0 评论 -
pytorch——梯度计算
1、梯度介绍梯度是一个向量,是学习(参数更新的方向)。收集数据,构建机器学习模型,得到判断模型好坏的方法:(回归损失)(分类损失)通过调整参数,尽可能降低随机选择一个起始点,通过调整,使得函数取得最小值。的更新方法:①计算的梯度(即导数):②更新:其中,,意味着将增大,,意味着将减小。当小到一定的程度或者循环达到一定次数后,或停止循环。...原创 2021-11-23 23:20:56 · 8124 阅读 · 2 评论 -
python文件操作(一)
一、文件概念1.1文件格式文件是存储在外部介质上的一组相关信息的集合。例如:程序文件是程序代码的集合,数据文件是数据的集合。每一个文件都有一个名字,称为文件名。操作系统把每一个与主机相连的输入/输出设备都作为文件来管理,称为标准输入/输出文件。例如:键盘是标准输入文件,显示器和打印机是标准输出文件。 python文件可以分为文本文件和二进制文件。文本文件的每一个字节代表一个ASCLL代码,即一个字符。二进制文件是把数据按其在内存中的存储形式原样输出到磁盘上存放。例如...原创 2021-11-06 00:19:06 · 379 阅读 · 0 评论 -
python网络通信(二)——基于UDP网络编程
from socket import *s = socket(AF_INET,SOCK_DGRAM)#IPv4协议,UDP协议s.sendto("hello",("192.168.0.106",8080))s.sendto("hello".encode(),("192.168.0.106",8080))from socket import *s = socket(AF_INET,SOCK_DGRAM)#IPv4协议,UDP协议s.sendto("你好".encode("gb23.原创 2021-09-06 20:13:05 · 1413 阅读 · 0 评论 -
python网络通信(一)——网络基础
目录一、IP地址私有/公有IP二、子网掩码三、端口号四、协议一、IP地址IP就是一串数字,比如:192.168.1.1。通过IP可以在网络当中唯一标识一个计算机,比如有四台计算机,通过一个交换机连接到一起,就成了一个小型的局域网,局域网中每台电脑都有一个IP地址,并且都不重复,如此,就可以通过IP地址唯一标识计算机。每个IP地址包含两个部分,一个是网络地址,一个主机地址。网络地址用于标识计算机处于哪个网络当中,所以一个局域网里,网络号都是一样的...原创 2021-09-01 16:59:55 · 427 阅读 · 0 评论 -
python并发编程
1、什么是多任务处理一台计算机可以同时处理多个任务,叫做多任务处理。实现多任务有三种方式:多进程、多线程、协程。单核CPU在处理多个任务时,比如有QQ,微信,网易云音乐,QQ只占用CPU的0.01秒,然后QQ会切出去,微信再占用0.01秒,然后微信会被切出去,网易云音乐再占用0.01s,CPU频繁快速地切换,使人无法察觉,感觉这三个任务时同时进行的。所以当开很多任务时,电脑会变卡。 (ps:有几个CPU就叫做几核CPU) 补充两个...原创 2021-08-27 17:16:37 · 199 阅读 · 0 评论 -
python编写坦克大战过程
坦克大战大量应用pygame包,https://www.pygame.org/docs/,可以阅读pygame文档熟悉相关的功能一、首先明白编写坦克大战有哪些需求应该思考有哪些类,以及其功能有什么。主逻辑类:开始游戏,结束游戏,获取事件(比如鼠标事件、键盘事件)并处理 坦克类(有我方坦克,和敌方坦克):移动,射击,坦克的展示 子弹类:移动,子弹的展示 爆炸效果类:爆炸效果的展示 障碍物类(该项目只考虑墙壁):属性(是否可以通过),墙的展示 音效类:播放音乐先开始编写框架...原创 2021-08-16 12:51:49 · 9653 阅读 · 5 评论 -
VS_2019利用pip安装pygame
目录一、关于pip出现的问题及解决 1. 首先找到pip.exe文件的路径: 2.将该路径复制到环境变量中: 3.验证二、pygame的安装 1.首先应该进入到自己安装的VS,查看自己的python版本,如图: 2.进行安装一、关于pip出现的问题及解决下载了VS2019,安装了python的环境,但是在命令提示符用pip命令下载第三方库时会出现可能是路径不包含的原因,具体解决方法...原创 2021-08-11 14:04:03 · 1753 阅读 · 2 评论