PyTorch入门学习(一)

torch、torch.nn、 torch.optim、torchvision、 torchvision.transforms 功能简介 命令将 PyTorch 框架导入到 Python 程序中,这样我们就可以使用 PyTorch 提供的各种功能了。PyTorch 是一个用于科学计算的机器学习库,具有以下重要功能:张量(Tensor)操作:PyTorch 引入了张量作为其核心数据结构,对张量进行各种操作(如加、减、乘、除、矩阵乘法、转置等)。自动求导:PyTorch 具有自动求导系统,能够自动计算输入变量关于输出变量的导数,并将反向传播算法应用于神经网络中。 阅读详情

PyTorch入门学习(一)

目录

PyTorch是一个很流行的开源深度学习平台,风头一度胜过Tensorflow,近期对对抗生成网络GAN比较感兴趣,GAN采用生成式和判别式网络,生成模型G捕捉样本数据的分布,判别模型D是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,最终,G 能估测出样本数据的分布,判别模型D的准确率等于50%左右。启发自博弈论中的零和博弈,也同周伯通的左右互搏有相通之处。近期的一些GAN的变种的论文都是由PyTorch实现的,欲善其事,先利其器,先把工具给学习了。

安装

目前PyTorch只支持linux和OSX,采用pip或者conda,在官网首页选好自己软件相应版本,可用两行命令安装。

pip install http://download.pytorch.org/whl/cu80/torch-0.1.12.post2-cp27-none-linux_x86_64.whl
pip install torchvision

我的版本是ubuntu+python 2.7+pip

基本操作

python常用的数值计算的库numpy不能通过GPU加速计算,所以计算速度较慢,PyTorch就可以,并且可以和numpy的数据类型转换。

Tensor

Tensor张量,简单理解:一维张量是向量,二维张量是矩阵
from __future__ import print_function
import torch
x=torch.Tensor(3,5) #实际为3*5的矩阵
x.size()  #Out:torch.Size([3, 5])
y = torch.rand(3, 5) #产生随机数
z=torch.ones(5)   #5个1

把Tensor放到GPU上

# let us run this cell only if CUDA is available
if torch.cuda.is_available():
    x = x.cuda()
    y = y.cuda()
    x + y
切片访问:x[:,1]    #x的第二行

Autograd

自动求导数包,这是PyTorch对神经网络求导的核心包。可以提供对Tensor各种操作的自动求导。

autograd.Variable

这个类是自动求导包的核心类,该类wraps了Tensor,支持Tensor的全部计算操作,计算完后调用.backward()函数时即能够自动计算梯度。
sample:计算 y=14∑4i=13(xi+2)2 对 xi 的导数

import torch
from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad=True)
y = (x+2) * (x+2) * 3
out = y.mean()
print(y, out)
out.backward() #out.backward(torch.Tensor([1.0]))
print(x.grad)

Out:Variable containing:
4.5000 4.5000
4.5000 4.5000
[torch.FloatTensor of size 2x2]
即y对每个x的导数都是4.5,一个简单的求偏导数

Function

Function类和Variable类相互联系组成了有向无环图,组成了整个计算过程。每个variable都有一个属性.creator,它引用了创造该variable的Function,用户自己创造的variable的.creator属性是None.
更多细节见Variable 和 Function 的 Documentation

Neural Networks示例

神经网络的构建主要用torch.nn包。nn依赖于autograd包来计算导数,nn.Module类定义了层和前向传播函数forward(input),来返回一个输出output.

一个定义卷积神经网络的Sample:
该例程输入为32*32随机矩阵,迭代了10次,仅做函数功能测试,无实际意义

import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # 建立了两个卷积层,第一层1 个通道输入, 6个输出通道, 5x5 卷积核
        self.conv1 = nn.Conv2d(1, 6, 5)
        self.conv2 = nn.Conv2d(6, 16, 5)
        #三个全连接层,y = Wx + b 这里没有做激活/非线性操作
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x): #2D卷积层的输入data维数是 batchsize*channel*height*width
        # 最大池化
        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
        x = F.max_pool2d(F.relu(self.conv2(x)), 2)
        x = x.view(-1, self.num_flat_features(x))
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

    def num_flat_features(self, x):
        size = x.size()[1:]  # all dimensions except the batch dimension
        num_features = 1
        for s in size:
            num_features *= s
        return num_features
net = Net()

# create your optimizer #训练网络用,除了SGD,还有SGD, Nesterov-SGD, Adam, RMSProp
optimizer = optim.SGD(net.parameters(), lr = 0.01)

# in your training loop:
for i in range(10):
    input = Variable(torch.randn(1, 1, 32, 32))
    optimizer.zero_grad() # zero the gradient buffers
    output = net(input)
    criterion=nn.MSELoss()
    target = Variable(torch.range(1, 10))
    loss = criterion(output, target)
    loss.backward()
    optimizer.step() # Does the update,i.e. Variable.data -= learning_rate*Variable.grad

print(net)
Net (
(conv1): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))
(conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))
(fc1): Linear (400 -> 120)
(fc2): Linear (120 -> 84)
(fc3): Linear (84 -> 10)
)

Loss函数

output = net(input)
target = Variable(torch.range(1, 10))  # a dummy target, for example
criterion = nn.MSELoss()  #mean-squared error between the input and the target.
loss = criterion(output, target)
print(loss)

Backprop

net.zero_grad()
print('conv1.bias.grad before backward')
print(net.conv1.bias.grad)#访问第一个卷积层的偏置的梯度的方法
loss.backward()
print('conv1.bias.grad after backward')
print(net.conv1.bias.grad)

权值更新

权值更新方法:

weight = weight + learning_rate * gradient

learning_rate = 0.01
for f in net.parameters():
    f.data.sub_(f.grad.data * learning_rate)
pytorch学习记录,其主要的17个模块功能概述 这里先介绍下pytorch主要的一些模块分别可以实现什么功能,后续会不断更新每一个模块中具体的API以及代码示例 一,torch模块 import torch 包含了多维张量的数据结构以及基于其上的多种数学操作。另外,它也提供了多种工具,其中一些可以更有效地对张量和任意类型进行序列化。具体包括pytorch张量的生成,以及运算、切片、连接等操作,还包括神经网络中经常使用的激活函数,比如sigmoid、relu、tanh,还提供了与numpy的交互操作 二,torch.Tensor import torch 阅读详情

相关推荐

深度学习框架PyTorch:入门与实践 学习(一)

从今天起要从头开始学习PyTorch了,在此记下笔记。 PyTorch 入门第一步 Tensor import Torch as t x = t.tensor(5,3)#生成5*3的矩阵 print(x.size())# 输出x的维度 print(x.size()[0]) #输出x的第0维 print(x.size(0))# 输出x的第0维 y = t.rand(5,3)# 生成0-1之...

清风吹斜阳 1119

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

在这一部分,我们将会对Pytorch做一个简单的介绍,包括它的历史、优点以及使用场景等。DataLoader类提供了对数据集的并行加载,可以有效地加载大量数据,并提供了多种数据采样方式。常用的参数有:dataset:加载的数据集(Dataset对象)batch_size:batch大小shuffle:是否每个epoch时都打乱数据num_workers:使用多进程加载的进程数,0表示不使用多进程。

Python84310366的博客 4万+

Pytorch入门教程

Pytorch学习总结:1.张量Tensor 张量是一种特殊的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于NumPy的ndarray,除了张量可以在 GPU 或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存,从而无需复制数据。...

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 4万+

pytorch一些函数的基本用法及作用

之前写写过 见pytorch中的torch.cat()矩阵拼接的用法及理解这个函数的作用主要是将矩阵交换两个维度。 结果 这个函数能对维度进行变换,view中的参数即为每一维应当包含的元素个数,如果-1即让其自动计算出。 运行结果 这个函数能够对任意维度进行任意交换,transpose只能对两个维度进行交换。用法是:原本0,1,2代表第1,2,3维,那么现在b.permute(2,0,1)即现在第一维是原来的第三维,第二维是原来的第一维,第三维是原来的第二维。 运行结果 作用就是降维,去掉维度中元素为1的维

学习笔记 2417

华为昇腾310P3+deepseek蒸馏版性能调优:FP16精度优化全记录

本文详细介绍了在华为昇腾310P3硬件环境下优化DeepSeek蒸馏版模型FP16精度的关键技术路径。通过分层量化策略、内存分配优化和并行计算配置,显著提升模型推理性能,实现83%的并发处理能力提升,同时保持98.7%的原始模型准确率。

weixin_29074409的博客 346

深入解析SAP MM模块OBYC自动科目分配机制:从T030表到实战配置

本文深入解析SAP MM模块中OBYC自动科目分配机制,阐明其作为连接物流与财务核心桥梁的作用。文章以T030表为核心,详细拆解其字段结构与检索逻辑,并通过采购收货、生产发料等实战场景,手把手演示配置步骤与关键要点,帮助读者掌握从原理到实践的完整知识体系,实现业财无缝对接。

nft7creator的博客 356

pytorch学习(一)基础入门

文章目录why pytorch?pytorch的安装(windows系统)配置安装环境 why pytorch? pytorch是一个最近比较火的深度学习框架,但目前仅支持linux和osx系统,所以windows系统需要通过虚拟机去安装。 pytorch是一个提供两个强大功能的python包: 具有强GPU加速度的张量计算,如numpy 深层神经网络 pytorch的安装(windows系统...

qq_39446239的博客 526

STM32F1的USB接口-自定义HID

设置USB VID:1155 PID :22352。

chilian12321的博客 838

基于PyTorch的深度学习入门教程(一)——PyTorch安装和配置

前言 深度神经网络是一种目前被广泛使用的工具,可以用于图像识别、分类,物体检测,机器翻译等等。深度学习(DeepLearning)是一种学习神经网络各种参数的方法。因此,我们将要介绍的深度学习,指的是构建神经网络结构,并且运用各种深度学习算法训练网络参数,进而解决各种任务。本文从PyTorch环境配置开始。PyTorch是一种Python接口的深度学习框架,使用灵活,学习方便。...

雁回晴空的博客专栏 24万+

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码)

本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。

s4t5u6v的博客 1199

PostgreSQL和PostGIS安装、导入shp或gdb格式数据至数据库、使用QGIS测试上传PstGIS数据库操作和代码

本文详细介绍了postgresql和postgis安装步骤,并且使用postgis测试上传shp和gdb格式的矢量数据至数据库,包括步骤和代码,并使用qgis连接postgis数据查看数据库里的数据,数据依旧和本地数据一样可查看可编辑,方便后续数据底座开发和服务。

weixin_46456488的博客 1245

PyTorch学习一: 入门

Tensor # from __future__ import print_function #该句语句是python2的概念,那么python3对于python2就是future了, #也就是说,在python2的环境下,超前使用python3的print函数 import torch as t t.__version__ '1.4.0+cu92' #只是分配了空间,未初始化 x = t.Tensor print(x) x = t.Tensor(5,3) print(x) x = t.Tensor(

m0_46471555的博客 278

【蓝牙专题】HCI协议解析

一、概念: 很多人接触蓝牙,是从HCI开始,因为HCI是主机控制接口协议(Host Controller Interface),蓝牙命令通过HCI来发送到Controller; 1、架构 如下图,HCI通过物理接口(USB、UART等)或虚拟接口,传递数据到Controller,Controller也通过同样的接口发送接收数据,这里注意到HCI层是在L2CAP层之下,LMP层之上; HCI

蚂蚁的专栏 5069

PyTorch 入门学习(一)————什么是PyTorch?

What is PyTorch? PyTorch是一个基于python的科学计算软件包,主要用于: 代替Numpy以使用GPU的功能 提供最大灵活性和速度的深度学习研究平台 Tensors 张量类似于Numpy的ndarrays,并且可以在GPU上使用加速计算 from __future__ import print_function import torch 1、矩阵的创建 构建一个未初始...

qq_36414085的博客 381

WinDbg调试工具安装全攻略:从下载到配置的保姆级教程(Windows 10/11适用)

本文提供了一份详细的WinDbg调试工具安装与配置指南,适用于Windows 10/11用户。文章对比了WinDbg Preview独立版与SDK内置经典版的区别,并手把手指导从Microsoft Store或Windows SDK完成安装。核心部分重点讲解了如何配置符号文件路径与源代码路径,这是让WinDbg发挥强大调试功能的关键步骤,并针对常见安装问题提供了实用的排错方法。

hp777的博客 385

基于 PCL 的工业盒体点云精准分割

本文提出一种基于PCL点云库的工业盒体点云分割算法,采用由粗到精的分层策略解决传统方法在噪声、稀疏和堆叠场景下的分割问题。算法通过区域生长粗分割、RANSAC平面筛选、球面回溯补全、凹包边界提取和圆柱回溯精分割五大核心模块,充分利用盒体几何先验特征,实现高效精准的分割效果。文章详细阐述了算法流程、参数调优指南及工程化要点,指出该方法相比深度学习具有速度快、鲁棒性强、部署简单的优势。同时分析了算法在倾斜、异形目标上的局限性,并展望了结合深度学习特征的混合模型发展方向。该算法为工业自动化场景中的3D视觉检测提供

weixin_45196569的博客 171

带你从入门到精通——深度学习(一. 深度学习简介和PyTorch入门)

深度学习(也被称为仿生物脑)是机器学习中的一种特殊方法,它使用被称为神经网络(也被称为仿生物神经元)的复杂结构,特别是“深层”的神经网络,来学习和做出预测。深度学习特别适合处理大规模和高维度的数据,例如图像、声音和文本。深度学习的精度高,性能优于其他的机器学习算法,甚至在某些领域超过了人类,并且随着计算机硬件的发展,可以近似任意的非线性函数。但深度学习是一种“黑箱”模型,很难解释模型的工作机制,并且训练时间长,需要大量的计算资源,网络结构复杂,容易发生过拟合。PyTorch。

2401_86480334的博客 2039

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Pytorch学习笔记之入门实战从Numpy到pytorch(一)

Pytorch学习笔记之入门实战(一) 本文从用Numpy实现两层神经网络到一步步由pytorch实现。 目的:只有体验过没有深度学习框架的难处,才能明白它的好!!! 运行环境说明,pytorch1.4.0 from __future__ import print_function import torch torch.__version__ '1.4.0' 开始了 1.热身: 用nump...

饲养员的小熊猫博客 850

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

一小时实践入门 PyTorch

链接:

幽雨雨幽 565

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

PyTorch学习入门(一)

PyTorch是一款基于Python的科学计算库,它是一个用于构建动态计算图的框架,专注于深度学习的应用和开发,提供了在GPU和CPU上速度快的张量操作和自动求导。下面是一个PyTorch新手学习的技术文档,其中包含PyTorch的介绍、PyTorch的功能和新手应该从哪里开始学习以及有用的学习资源和网站推荐。PyTorch是Facebook旗下的开源机器学习库,它是一款基于Python的科学计算库,提供了易于使用的API,可以用于构建深度学习模型。深度学习最常用的框架之一是卷积神经网络(CNNs)。

dumpling90的博客 262

pytorch学习-从入门到mnist(一)

pytorch学习-从入门到mnist(一) 标签: pytorch 在学习过Tensorflow之后,其实学习pytorch并不是特别难,因为很多地方是相通的,可能每个库会有自己的深层特性,但是在初学的时候对于简单api的调用还是易懂的。 pytroch定义Tensor 因为在这些深度学习库中张量是一个通用的东西,所以要先学会怎么定义一个Tensor,简单的我们可以直接把ndarray变为一个...

CoderWangSon 879

深度学习 PyTorch 学习入门(一)

深度学习 前言:本小白从0开始,决心通过各种视频和资料的学习和实践,经过不断总结和反思,尽快入门,把自己的水平切实提高,同时给大家分享这一路的历程,共同收获! 深度学习: 机器学习的一个分支,是一种以人工神经网络为架构,对数据进行特征学习的算法 深度学习和机器学习的区别:(推荐两文详细了解:Article 1,Article 2) 特征抽取: 机器学习是人工的特征抽取 深度学习是自动的进行特征抽取 数据量 机器学习数据少,效果相对差,深度学习多,深度学习参数多,需要大量调整,效果也更好 深度学习应用场景

Ax的博客 461

Pytorch学习入门(一)

从torch跳坑至pytorch 关于tensor的五大原则: I. 从:到.的过度!现在没有所谓的torch.Tensor(3,4):fill(1)了,变成了 torch.Tensor(3,4).fill_(1)。 II. Inplace与Out-of-place, 前者加上后缀_,表示内部直接替换,而后者没有该后缀。 比如 a = torch.Tensor(3,4) ...

学习、记录、分享 735

pytorch入门(一)深度学习入门及pytorch相关demo

以下是我的学习笔记,以及总结,如有错误之处请不吝赐教。 什么是深度学习? 深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。深度学习中的深度指的并不是利用这种方法所获取的更深层次的理解。 什么是神经网络? 人工神经网络(artificial neural network,缩写ANN),简称神经网络...

算法人生 919

pytorch入门学习笔记①

pytorch入门学习 不同版本的模块导入语句 1. summary writer from tensorboardX import SummaryWriter from torch.utils.tensorboard import SummaryWriter 2. 日志读写功能 目前碰到过的使用日志的有: (1)使用python第三方库logging (2) 使用tensorflow中的方法 第一种情况,参考写法: import logging loss_log = log_creater(file

star_xxzeng的博客 350
上一篇: [目标跟踪]long term correlation filter CVPR2015文章
下一篇: C++对象模型学习
cuclxt
博客等级 码龄14年 59粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值