60分钟学pytorch

2023-11-09

本文会持续更新,直至完成pytorch中的60分入门文档部分,目前为tensor的基础操作部分

本文代码github:https://github.com/amazingzby/pytorch_tutorial

    pytorch官方文档给初学者提供了一份pytorch的入门教程:DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ 。本文是此教程的学习笔记,也可以理解为对官方文档的翻译。通过学习,可以基本理解如下问题:

a.理解pytorch 的tensor和神经网络基本操作;

b.训练一个简单的图像分类神经网络。

本文为pytorch 有关Tensor的基本操作

     pytorch中的tensor可以理解为numpy的GPUs版本。

     构建一个5*3,未初始化的矩阵

import torch
x = torch.empty(5,3)
print(x)

      输出结果为:

      tensor([[8.4490e-39, 1.0194e-38, 9.0919e-39],
        [8.4490e-39, 8.9082e-39, 9.8265e-39],
        [1.0102e-38, 1.0561e-38, 1.0194e-38],
        [9.2755e-39, 1.0010e-38, 8.4490e-39],
        [8.7245e-39, 1.0102e-38, 1.0653e-38]])

构建5*3,随机初始化矩阵

x = torch.rand(5, 3)
print(x)

5*3的零矩阵

x = torch.zeros(5,3,dtype=torch.long)#零矩阵
print(x)

用数组构建tensor:

x = torch.tensor([5.5, 3])
print(x)

  输出:tensor([5.5000, 3.0000])

在现有tensor的基础上构建tensor,新的tensor保持旧tensor的一些属性(如形状和类型),除非新的tensor指定新的属性:

x = x.new_ones(5, 3, dtype=torch.double)      # 新的tensor指定了形状和dtype
print(x)

x = torch.randn_like(x, dtype=torch.float)    # 指定dtype,保留原来的形状
print(x)

获得tensor的形状参数:

print(x.size())

加操作:

y = torch.rand(5, 3)
print(x + y)
print(torch.add(x,y))
result = torch.empty(5, 3)
torch.add(x, y, out=result)#将x+y赋值给result
print(result)
y.add_(x)
print(y) #类似于y+=x

使用类似于numpy的切片操作

print(x[:, 1])

torch.view 类似于numpy中的reshape

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)  # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())

如果tensor只有一个数字,使用item()方法来获得这个数值:

x = torch.randn(1)
print(x)
print(x.item())

将tensor转化为numpy,此时如果改变tensor的数值,numpy类型的数值也会改变,类似于C++中的指针:

a = torch.ones(5)
b = a.numpy()
a.add_(1)
print(a)# tensor([2., 2., 2., 2., 2.])
print(b) #[2. 2. 2. 2. 2.] a中元素发生改变,b也随着a的改变而改变

 

numpy转化为tensor

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)   #[2. 2. 2. 2. 2.]
print(b)   #tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

使用to方法将cpu数据移入到gpu中,或者将gpu数据移到cpu中(要求安装gpu版本的pytorch):

if torch.cuda.is_available():
    device = torch.device("cuda")
    y = torch.ones_like(x,device=device)
    x = x.to(device)
    z = x + y
    print(z)
    print(z.to("cpu", torch.double))

 

 

 

 

 

 

 

 

 

 

 

 

 

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

60分钟学pytorch 的相关文章

随机推荐

  • 雅可比算法求矩阵特征值C语言源代码,雅可比(Jacobi)计算特征值和特征向量

    雅可比迭代法法 在图形图像中不少地方用到求矩阵的特征值和特征向量 好比主成分分析 OBB包围盒等 编程时通常都是用数值分析的方法来计算 这里介绍一下雅可比迭代法求解特征值和特征向量 雅可比迭代法的原理 网上资料不少 详细可见参考资料1 这里
  • 【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

    简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下
  • Linux中桥接模式配置IP

    前言 本文主要介绍如何使用桥接模式配置IP 在使用虚拟机进行通信时 经常需要面临三种模式选择 不同模式之间配置不同 系统环境 CentOS 7 两种模式区别 NAT 虚拟机从属于主机 访问外部网络必须通过主机访问 虚拟机的IP只有主机才能识
  • 用DETR进行目标检测的predicat文件

    文章目录 前言 二 使用步骤 1 更改官方detr中308行的类别数 2 根目录加入检测文件 总结 前言 由于最近研究DETR目标检测 但是发现官方给的代码缺少了predict文件 于是自己写了一个 但是写代码的过程中也想到了一些问题 比如
  • QT QPushButton点击事件的实现

    最近需要对按钮实现效果 当鼠标按下时按钮有效果1 然后鼠标松开时按钮有效果2 分析 这里没有现成的信号可以使用 需要重载mousePressEvent 及 mouseReleaseEvent 事件函数 在mouseReleaseEvent
  • 技术笔记

    https docs qq com doc DUVBFRUNvUW1SUXB5
  • js模仿f11全屏_js触发f11全屏

    document on keydown function e var e event window event arguments callee caller arguments 0 if e e keyCode 122 捕捉F11键盘动作
  • 【CSS】css样式控制div水平垂直居中的六种方法

    1 绝对定位方法 不确定当前div的宽度和高度 采用 transform translate 50 50 当前div的父级添加相对定位 position relative 如图所示 代码如下 div background red posit
  • grep、sed、awk、perl等对正则表达式的支持的差别

    以perl的正则为基准 不同的用法以粉红色标出 因为spacemacs支持vim正则表达式操作 而且能够实时显示匹配内容和替换结果 可以作为perl脚本的正则表达式debug手段 转载来自 grep sed awk perl等对正则表达式的
  • Qt:信号和槽总结(1,C++11下的信号和槽 2,第五个参数 3,阻塞 )

    Qt 信号和槽总结 1 C 11下的信号和槽 2 第五个参数 3 阻塞 信号和槽是Qt特有的一种通讯方法 具有以下特点 信号与槽的连接比较灵活 可以一对一 一对多或者是多对一 信号与槽的绑定与解除也十分的灵活 使用connect以及disc
  • CONTAINING_RECORD宏原理与使用详解

    先不急着说CONTAINING RECORD宏 我们从最浅显的代码开始讲解 一 0指针的妙用 0指针 即nullptr NULL 空指针 是不是很常见 一遇到它往往就是segment fault 代码 如下 struct Test int
  • Vue实现Alert插件

    实现alert插件 在Vue中我们可以使用 Vue component tagName options 进行全局注册 也可以是在组件内部使用 components 选项进行局部组件的注册 全局组件是挂载在 Vue options compo
  • python的with关键字

    前言 with表达式其实是try finally的简写形式 但是又不是全相同 格式 格式 with context as var pass 其中的context是一个表达式 返回的是一个对象 var用来保存context表达式返回的对象 可
  • git pull: Please commit your changes or stash them before you merge

    参考 Git冲突 commit your changes or stash them before you can merge 总结 如果git pull 报错 Please commit your changes or stash the
  • Hyperledger Fabric能否大规模运行?

    我很高兴回答这个问题 简短的回答是 是的 确实如此 我的疑问 我对大规模Hyperledger Fabric Fabric 的性能提出了很多疑问 很多时候 人们已经完成了一些 或阅读 听说过 性能测试 比如在他们的笔记本电脑或早期版本的Fa
  • Android 使用 Jenkins 实现自动化打包【流程】&【踩坑】

    引言 每个Android开发应该都有经历过正在码代码的时候突然被打断要求打个啥啥环境啥啥配置的安装包 然后就得暂存代码 切换分支 更改配置 等待build balabala 往大了说就是浪费时间消耗员工价值对公司的不负责 胡扯 往小了说就是
  • 在复苏与重塑之路上,同程旅行为旅游业价值回归交出答卷

    若论对疫情感受最深刻的行业 旅游业必然榜上有名 也许这个产业链上的每个玩家在这两年都思考过这样两个问题 客观上 旅游业恢复的基础条件有哪些 主观上 又该用什么措施 什么方法应对现在的局面 尽管疫情影响仍未消散 但11月以来 从防疫新提法到文
  • PostgreSQL pg中的截取补齐lpad函数怎么用?

    PostgreSQL pg中的截取补齐lpad函数怎么用 1 左边填充 右边截取 PostgreSQL中的lpad 函数有两个功能 如果长度不够指定的长度 就在左边填充字符串 如果长度超出了指定的长度 就把右边截掉 The PostgreS
  • 使用matplotlib绘制饼图

    根据消费类别 如外卖 零食 衣服 娱乐等 使用matplotlib绘制本月的消费支出饼图 以代码插入方式提交源代码 并以图像文件提交运行截图 python代码 import matplotlib pyplot as plt from pyl
  • 60分钟学pytorch

    本文会持续更新 直至完成pytorch中的60分入门文档部分 目前为tensor的基础操作部分 本文代码github https github com amazingzby pytorch tutorial pytorch官方文档给初学者提