PyTorch入门

2023-05-16

PyTorch入门

PyTorch 是一个建立在 Torch 库之上的 Python 包,旨在加速深度学习应用。PyTorch 提供一种类似 NumPy 的抽象方法来表征张量(或多维数组),它可以利用 GPU 来加速训练。

PyTorch 既可以看做加入了GPU 支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络,除了Facebook 之外,它还已经被Twitter、CMU 和Salesforce 等机构采用。

基本知识

标量、向量、张量的区别,下图已经很明确了。

在这里插入图片描述

PyTorch 的关键数据结构是张量,即多维数组。其功能与 NumPy 的 ndarray 对象类似,如下我们可以使用 torch.Tensor() 创建张量。

# Generate a 2-D pytorch tensor (i.e., a matrix)
pytorch_tensor = torch.Tensor(10, 20)
print("type: ", type(pytorch_tensor), " and size: ", pytorch_tensor.shape )

如果你需要一个兼容 NumPy 的表征,或者你想从现有的 NumPy 对象中创建一个 PyTorch 张量。

# Convert the pytorch tensor to a numpy array:
numpy_tensor = pytorch_tensor.numpy()
print("type: ", type(numpy_tensor), " and size: ", numpy_tensor.shape) 
# Convert the numpy array to Pytorch Tensor:
print("type: ", type(torch.Tensor(numpy_tensor)), " and size: ", torch.Tensor(numpy_tensor).shape)

PyTorch与TensorFlow

就目前而言,由于各种原因,TensorFlow 显然比 PyTorch 更受青睐。

TensorFlow 很大,经验丰富,最适合实际应用。 是大多数机器学习和深度学习专家明显的选择,因为它提供了大量的功能,最重要的是它在市场上的成熟应用。 它具有更好的社区支持以及多语言 API 可用。 它有一个很好的文档库,由于从准备到使用的代码使之易于生产。 因此,它更适合想要开始深度学习的人,或者希望开发深度学习模型的组织。

虽然 PyTorch 相对较新,社区较小,但它速度快,效率高。 总之,它给你所有的优势在于 Python 的有用性和易用性。 由于其效率和速度,对于基于研究的小型项目来说,这是一个很好的选择。 如前所述,Facebook、Twitter 等公司正在使用 PyTorch 来训练深度学习模型。 但是,使用它尚未成为主流。 PyTorch 的潜力是显而易见的,但它还没有准备好去挑战这个 TensorFlow 野兽。 然而,考虑到它的增长,PyTorch 进一步优化并提供更多功能的日子并不遥远,直到与 TensorFlow可以 比较。

pytorch入门代码

import torch

dtype = torch.FloatTensor
# dtype = torch.cuda.FloatTensor # Uncomment this to run GPU

# N is batch size; D_in is input dimenssion
# H is hidden demenssion; D_out is output dimension
N, D_in, H, D_out = 64, 1000, 100, 10

# create random input and output data
x = torch.randn(N, D_in).type(dtype)
y = torch.randn(N, D_out).type(dtype)

# Randomly initialize weights
w1 = torch.randn(D_in, H).type(dtype)
w2 = torch.randn(H, D_out).type(dtype)

learning_rate = 1e-6

for t in range(500):
    # Forward pss: compute predicted y
    h = x.mm(w1)
    h_relu = h.clamp(min=0)
    y_pred = h_relu.mm(w2)

    # compute and print loss
    loss = (y_pred - y).pow(2).sum()
    print(t, loss)

    # backprop to compute gradients of w1 and w2 with respect to loss
    grad_y_pred = 3.0 * (y_pred - y)
    grad_w2 = h_relu.t().mm(grad_y_pred)
    grad_h_relu = grad_y_pred.mm(w2.t())
    grad_h = grad_h_relu.clone()
    grad_h[h<0] = 0
    grad_w1 = x.t().mm(grad_h)

    # update weights using gradient descent
    w1 -= learning_rate * grad_w1
    w2 -= learning_rate * grad_w2

pytorch官网:https://pytorch.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyTorch入门 的相关文章

随机推荐

  • 高维(多变量)优化问题的技术与瓶颈

    现实世界中的优化问题往往具有较高的复杂度和维数 xff0c 称为LSGO问题 xff0c 即Large Scale Global Optimization 此问题在各个领域的研究工作中都引起了极大的兴趣 许多科学和工程应用程序被表述为LSG
  • 基于变长PSO的高维特征选择算法(VLPSO)概述

    原文 xff1a http www omegaxyz com 2018 09 16 vlpso 简介 原文 xff1a Variable Length particle swarm optimisation for feature sele
  • JavaWeb-MVC模式概述

    MVC设计模式 MVC模式 xff08 Model View Controller xff09 是软件工程中的一种软件架构模式 xff0c 把软件系统分为三个基本部分 xff1a 模型 xff08 Model xff09 视图 xff08
  • IntelliJ IDEA创建Java-Web项目

    eclipse和idea都能够创建Java web项目 下面介绍使用idea创建Java web项目的步骤 需要准备的东西 intellij idea xff08 包括jdk xff09 Tomcat7 0 43 可选 xff08 如果需要
  • 基于拥挤距离与变异支配的多目标PSO算法

    这一篇是Xue Bing在一区cybernetics发的论文 xff0c 里面提出了两个多目标PSO特征选择算法 xff0c 一个是NSPSO另一个是CMDPSO 其中NSPSO是参考了NSGA2的框架和思想 下面具体说说CMDPSO CM
  • Cohen-Sutherland算法概述

    思想 通过对于任一端点 x y xff0c 根据其坐标所在的区域 xff0c 赋予一个4位的二进制码 xff0c 判断图形元素是否落在裁剪窗口之内并通过求交运算找出其位于内部的部分 编码方式 注意 xff1a l为left xff0c r为
  • 人机交互的形式

    命令行交互 优点 xff1a 专家用户使用命令行能够更加快速地完成任务 较图形界面更加节约系统资源 对用户而言是开放的 xff0c 不存在图形界面中不能动态配置用户可操作选项的问题 键盘操作方式较鼠标操作更加精确 xff0c 对应用的掌控力
  • canvas 报错记录 (一)

    在执行下面代码的时候报错 var can 61 document getElementById 34 can 34 var ctx 61 can getContext ctx content cfillRect 500 500 200 20
  • 进化计算中基于分类的预处理代理模型

    问题提出 代理模型的构造较复杂 xff0c 作者希望构造一个更为简单的廉价 xff08 cheap xff09 的代理模型来评估子集的质量 因此作者提出了一个叫做CPS xff08 classification based preselec
  • Python利用Graphviz画图

    Graphviz的是AT amp T Labs Research开发的图形绘制工具软件 Graphviz的是AT amp T Labs Research开发的图形绘制工具 他可以很方便的用来绘制结构化的图形网络 支持多种格式输出 生成图片的
  • Java-Web项目总结

    使用jetbrain的idea创建Java Web项目 链接地址 xff1a http www omegaxyz com 2018 10 04 intellij idea java web Java MVC模式概述 链接地址 xff1a h
  • 基于WMD(词移距离)的句子相似度分析简介

    word2vec word2vec是只有一个隐层的全连接神经网络 对语料中的所有词汇进行训练并生成相应的词向量 xff08 Word Embedding xff09 WI 的大小是VxN V是单词字典的大小 每次输入是一个单词 N是设定的隐
  • Android 使用字符串动态获取资源ID

    android文件中每个文件都有一个ID xff0c 如下图所示 xff0c 左边的0x7f060000即是文件的ID xff1a 如果我们想在代码中获取这个文件的ID应该使用高效率的反射机制 xff0c 可以新建一个Java类代码如下 x
  • wxpython画表格代码

    wxPython是Python语言的一套优秀的GUI图形库 允许Python程序员很方便的创建完整的 功能键全的GUI用户界面 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户
  • 数据库c3p0配置SQL Server与MySQL

    C3P0是一个开源的JDBC连接池 xff0c 它实现了数据源和JNDI绑定 xff0c 支持JDBC3规范和JDBC2的标准扩展 目前使用它的开源项目有Hibernate xff0c Spring等 SQL Server配置 xff1a
  • JSP连数据库登录检查用户名和密码模板

    JSP全名为Java Server Pages xff0c 中文名叫java服务器页面 xff0c 其根本是一个简化的Servlet设计 xff0c 它是由Sun Microsystems公司倡导 许多公司参与一起建立的一种动态网页技术标准
  • 基于移动设备与CNN的眼动追踪技术简介

    眼动追踪是一项科学应用技术 xff0c 用户无需与交互设备物理接触即可发送信息与接收反馈 从原理上看 xff0c 眼动追踪主要是研究眼球运动信息的获取 建模和模拟 xff0c 用途颇广 而获取眼球运动信息的设备除了红外设备之外 xff0c
  • 递归下降实现LL(1)文法分析C语言与Python实现

    对文法G的句子进行确定的自顶向下语法分析的充分必要条件是 xff0c G的任意两个具有相同左部的产生式A gt 满足下列条件 xff1a xff08 1 xff09 如果 均不能推导出 xff0c 则 FIRST FIRST 61 xff0
  • Ubuntu下gcc的安装

    sudo apt get build dep gcc
  • PyTorch入门

    PyTorch入门 PyTorch 是一个建立在 Torch 库之上的 Python 包 xff0c 旨在加速深度学习应用 PyTorch 提供一种类似 NumPy 的抽象方法来表征张量 xff08 或多维数组 xff09 xff0c 它可