pytorch应用(入门1)

news2024/11/20 7:15:36

目录

  • 学习用具
  • 张量的定义和运算
  • Variable(变量)
  • Dataset数据集

之前一直是拿一个个项目来学pytorch,感觉不是很系统,借着假期的机会系统学一下。预计先把入门的知识一周学完吧。

学习用具

《深度学习入门之Pytorch》廖星宇

在Z-library上能搜到。
conda命令一定要会

英伟达官方驱动

在这里插入图片描述

在这里插入图片描述

先运行下以下代码:

import torch
print(torch.cuda.is_available())

我的返回是False

于是我开始了求索之路。打开命令行,输入 nvidia-smi,查看自己的 Driver Version
在这里插入图片描述
Driver Version: 516.94
CUDA Version: 11.7
然后我又进行了一遍:
在这里插入图片描述
????什么鬼

最后应该是CUDA版本和pytorch不匹配吧。算了,能用就行,回头再说……
编程熟练才是王道。

张量的定义和运算

import torch

a=torch.Tensor([[2,3],[4,8],[7,9]]) # 三行两列的矩阵

print('a is {}'.format(a))
print('a size is {}'.format(a.size()))

我费了好大劲,不知道为啥我的VScode运行不了pytorch,老是显示有错误。我放到jupyter notebook上之后就好了……

运行结果:

a is tensor([[2., 3.],
        [4., 8.],
        [7., 9.]])
a size is torch.Size([3, 2])

上面的代码内容牵扯到的语法教程

torch.rand_like 就是和第一个参数的shape是一样的。也是随机数。

接下来就是把书中的例子都练一遍。

import torch

b=torch.LongTensor([[2,3],[4,8],[7,9]])
print(b)

print()

c = torch.zeros((3, 2))
print('zero tensor: {}'.format(c))

运行结果:

tensor([[2, 3],
        [4, 8],
        [7, 9]])

zero tensor: tensor([[0., 0.],
        [0., 0.],
        [0., 0.]])

Variable(变量)

在这里插入图片描述
在这里插入图片描述

from torch.autograd import Variable # torch 中 Variable 模块
# Create Variable
x = Variable(torch.Tensor([1]), requires_grad=True) #True表示对这个变量求梯度,本来默认的False
w = Variable(torch.Tensor([2]), requires_grad=True)
b = Variable(torch.Tensor([3]), requires_grad=True)

# Build a computational graph. 创建一个计算图
y=w*x+b # y=2*x+3

# Compute gradients  下面这一行就是自动求导
y.backward()  # same as y .backward(torch.FloatTensor([1]))

# Print out the gradients.
print(x.grad)# x.grad = 2
print(w.grad)# w.grad = 1
print(b.grad)# b.grad = 1

又TM报错了
NameError: name ‘Variable’ is not defined
我¥……¥(&%…………*…………&¥%

吆西,得导入from torch.autograd import Variable # torch 中 Variable 模块

运行成功!

tensor([2.])
tensor([1.])
tensor([1.])

不过,对于标量求导,里面的参数就可以不写了,自动求导不需要你再去明确地写明哪个函数对哪个函数求导,直接通过这行代码就能对所有的需要梯度的变量进行求导,得到它们的梯度,然后
通过x. grad可以得到x的梯度。注意,这里没有括号。

做矩阵求导

x = torch.randn(3)
x = Variable(x, requires_grad=True)
y=x*2
print(y)
y.backward(torch.FloatTensor([1,0.1,0.01]))
print(x.grad)
# print(y.grad)  y没有梯度

运行结果:

tensor([-0.8490, -1.3609,  2.9927], grad_fn=<MulBackward0>)
tensor([2.0000, 0.2000, 0.0200])

在这里插入图片描述
如果取消上段代码的注释,会有以下效果。
在这里插入图片描述

Dataset数据集

官方API文档:https://pytorch.org/vision/stable/datasets.html
torch.utils.data.Dataset是代表这一数据的抽象类,你可以自己定义你的数
据类继承和重写这个抽象类,非常简单,只需要定义_len__getitem_ 这两个函数(长下面这样):

在这里插入图片描述

通过上面的方式,可以定义我们需要的数据类,可以通过迭代的方式来取得每一个数据,但是这样很难实现取batch, shuffle 或者是多线程去读取数据,所以PyTorch中提供了一个简单的办法来做这个事情,通过torch. utils. data. DataLoader来定义一个新的迭代器,如下:(以后基本都用这个,上面的那个有些项目中也用,看懂就行)

dataiter = DataLoader (myDataset, batch size=32,shuffle=True,collate_fn=default_collate)

collate_fn表示如何获取样本。
但是!!!我看的书中对于这个类的操作逻辑并没有讲明白,反而给身为读者的我一种只要在这两种方法里选择一种的方法就行,但是不是的。看下面的文章你就明白了。
两步走

具体的操作逻辑

ImageFolder
在这里插入图片描述
其中的root需要是根目录,在这个目录下有几个文件夹,每个文件夹表示一个类别: transformtarget_transform 是图片增强;

loader 是图片读取的办法,因为我们读取的是图片的名字,然后通过loader将图片转换成我们需要的图片类型进人神经网络。

加载数据集的基础运用部分到此就算结束了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字孪生流域建设及其应用

2021年底水利部召开推进数字孪生流域建设工作会议&#xff0c;会议按照“需求至上、应用至上、数字赋能、提升能力”要求&#xff0c;以数字化、网络化、智能化为主线&#xff0c;以数字化场景、智慧化模拟、精准化决策为路径&#xff0c;以算据、算法、算力建设为支撑&#xf…

美国服务器安全吗?如何进行安全检测和使用?

对服务器安全检测是保证稳定运行的一种方式&#xff0c;尤其面向海外的一些用户&#xff0c;因为使用的服务器无法时刻检查&#xff0c;对安全系数要求又很高。因此&#xff0c;在租用前和使用时进行安全检测是十分有必要的。那么&#xff0c;美国服务器怎么进行安全检测呢? 一…

为深度学习选择最好的GPU

在进行机器学习项目时&#xff0c;特别是在处理深度学习和神经网络时&#xff0c;最好使用GPU而不是CPU来处理&#xff0c;因为在神经网络方面&#xff0c;即使是一个非常基本的GPU也会胜过CPU。 但是你应该买哪种GPU呢?本文将总结需要考虑的相关因素&#xff0c;以便可以根据…

直播倒计时1天!“基于AIOps的全面可观测性网络研讨会”与你不见不散

当企业云化不断加速&#xff0c;应对重复冗杂的运维活动&#xff0c;引入智能算法的AIOps已成发展趋势&#xff1a; 高效定位故障来源&#xff0c;保证数字业务稳定可靠运行&#xff0c;深挖数据价值促进企业创新……AIOps能做的还有很多。 想了解更多关于AIOps的相关内容&am…

Spring注册Bean系列--方法4:@Import+ImportSelector接口

原文网址&#xff1a;Spring注册Bean系列--方法4&#xff1a;ImportImportSelector接口_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring注册Bean的方法&#xff1a;ImportImportSelector接口。 注册Bean的方法我写了一个系列&#xff0c;见&#xff1a;Spring注册Bean(提供Be…

php宝塔搭建部署实战SDCMS蓝色系列包装行业网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的SDCMS蓝色系列包装行业网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

房产管理系统平台架构求分析

数图互通房屋管理系统遵循高校房产“分级授权、分类管理、网络化、图形化、精细化、流程化”的管理理念&#xff0c;在资产管理部门统一管理全校房产的前提下&#xff0c;注重二级单位在房产管理中的参与&#xff0c;注重针对不同类型类别房产的分类管理提高学校房产的使用效率…

加强舆情监控有哪些方法,互联网舆情监控平台有哪些?

加强舆情监控是指企业通过提升监控能力&#xff0c;更好地了解公众对其产品、服务、品牌形象等的看法&#xff0c;并及时采取应对措施。接下来TOOM舆情监测小编带您简单了解加强舆情监控有哪些方法&#xff0c;互联网舆情监控平台有哪些&#xff1f; 企业可以通过以下方式加强舆…

C# 并行编程

一 并行任务库TPL 1 并行任务库&#xff08;TPL&#xff0c;Task Parallel Library&#xff09; 2 最重要的是Task类&#xff0c;还有Parallel类 3 Task类&#xff0c;是利用线程池来进行任务的执行 比如直接用ThreadPool更优化&#xff0c;而且编程更方便 4 Paallel类&…

右值引用与移动语义

目录 一、左、右值引用 1.1 什么是左值 1.2 什么是右值 1.3 右值引用特性 1.4 move语义 二、左、右值引用的比较 三、右值引用的使用场景 3.1 左值引用的短板 3.2 解决方案 四、移动构造与移动赋值 注意情况 五、万能引用与完美转发 5.1 万能引用 5.2 完美转发 …

【SpringMVC】SpringMVC中异常处理

1.异常处理的思路 系统中异常包括两类&#xff1a;预期异常和运行时异常 RuntimeException&#xff0c;前者通过捕获异常从而获取异常信息&#xff0c;后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的 dao、service、controller 都通过 throws Excepti…

以前的互联网技术几乎是解决一切痛点和难题的万能解药

事实上&#xff0c;以往&#xff0c;我们所经历的那个互联网玩家频出的年代&#xff0c;其实就是一个以互联网技术为主导的年代。在那样一个年代里&#xff0c;互联网技术几乎是解决一切痛点和难题的万能解药&#xff0c;几乎是破解一切行业痛点和难题的杀手锏。任何一个行业&a…

怎么恢复删除的照片?分享5种恢复 iPhone /iPad 照片的方法

从 iPhone 中删除照片可能会带来压力。以下是如何使用几种不同的方法从 iPhone 恢复最近删除的照片。运气好的话&#xff0c;如果照片没有被新数据覆盖&#xff0c;您可以取回照片。 方法 1. 使用iPhone照片恢复工具 以下是如何使用图像恢复软件从 iPhone 中恢复已删除的图片&a…

字节跳动模型大规模部署实战

动手点关注干货不迷路1. 背景介绍在字节跳动&#xff0c;基于深度学习的应用遍地开花&#xff0c;工程师关注模型效果的同时也需要关注线上服务一致性和性能&#xff0c;早期这通常需要算法专家和工程专家分工合作并紧密配合来完成&#xff0c;这种模式存在比较高的 diff 排查验…

电磁兼容教程

------------------------20221228--------------------------------- 定义&#xff1a; 电磁环境&#xff0c;设备正常工作&#xff0c;不干扰其他设备。共存 电磁兼容研究 有限时间、空间、频谱设备共存的科学 要素&#xff1a; 电磁环境是由空间、时间、频谱三要素组成。…

怎么把word转化为PDF?赶快试试这个方法!

怎么把word转化为PDF&#xff1f;我们都经常会编辑文件、记录数据&#xff0c;所以也经常会需要转换文件的格式&#xff0c;word文件转换为PDF文件是最热的转换操作之一&#xff0c;所以有很多人都在问小编到底该怎样进行转换&#xff0c;不知道怎样转换出来的文件质量高&#…

18-剑指 Offer 20. 表示数值的字符串

题目 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数若干…

Debian系列-开机启动程序

Debian系列-开机启动程序 文章目录Debian系列-开机启动程序摘要1 修改/etc/profile2 输入密码&#xff0c;以管理员权限运行程序关键字&#xff1a; 开机启动、 Debian、 Linux、 profile、 etc内容背景&#xff1a; 最近项目终于切到Linux下开发了&#xff0c;所以最近的记录…

sklearn.neighbors 最近邻相关算法,最近邻分类和回归

文章目录sklearn.neighbors 最近邻相关算法&#xff0c;分类和插值1. 查找最近邻元素2. 最近邻分类3. 最近邻回归4. NearestCentroid 最近邻质心分类5. Neighborhood Components Analysis 邻域成分分析sklearn.neighbors 最近邻相关算法&#xff0c;分类和插值 主要介绍 sklea…

day31【代码随想录】回溯之子集||、递增子序列、全排列、全排列||

文章目录前言一、子集 II&#xff08;力扣90&#xff09;二、递增子序列&#xff08;力扣491&#xff09;三、全排列&#xff08;力扣46&#xff09;四、全排列||&#xff08;力扣47&#xff09;总结前言 1、子集|| 2、递增子序列 3、全排列 4、全排列|| 一、子集 II&#xff…