版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36556893/article/details/86480120
前言
博主学习了PyTorch,发现这个深度学习框架适合研究和使用。
当然,博主热衷于vs2017这款IDE。虽然博主同样安装了PyCharm和Eclipse,但是由于写C++Debug的习惯,还是选择了vs2017(和vs2019)作为深度学习的集成开发环境,希望可以帮助博主学习深度学习知识。
环境安装
主要参考博主的这篇文章:vs2017 开始自己的第一个PyTorch程序

在之后的相关教程里博主不会再给出安装的具体步骤,因为按顺序看的话没有这样的问题嘿嘿~

PyTorch入门实战
1.博客:PyTorch 入门实战(一)——Tensor
2.博客:PyTorch 入门实战(二)——Variable
3.博客:PyTorch 入门实战(三)——Dataset和DataLoader
4.博客:PyTorch 入门实战(四)——利用Torch.nn构建卷积神经网络
5.博客:PyTorch 入门实战(五)——2013kaggle比赛 猫狗大战的实现
目录

前言

环境安装

一、Tensor的创建和使用

二、Tensor放到GPU上执行

三、Tensor总结

一、Tensor的创建和使用
1.概念和TensorFlow的是基本一致的,只是代码编写格式的不同。我们声明一个Tensor,并打印它,例如:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([1, 2], [3, 4],[5, 6], [7, 8])
print(a)
print('{}'.format(a))
然后会发现报以下错误:

new() received an invalid combination of arguments - got (list, list, list, list), but expected one of:  * (torch.device device)  * (torch.Storage storage)  * (Tensor other)  * (tuple of ints size, torch.device device)  * (object data, torch.device device)

意思是接收到无效的参数组合。其实是少写了一对中括号,这是初学者的常用错误。

2.改成如下形式:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(a)
print('{}'.format(a))
结果为:

3.如果想查看的它的大小可以加一句话:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a.size()))
结果为:

即4行2列的矩阵

4.如果想生成一个全为0的矩阵,可以输入如下代码:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a.size()))
b = torch.zeros((4, 2))
print(b)
结果为:

即4行2列数组元素全为0的矩阵

5.如果想生成不同类型的数据,可以改变torch.后面函数名称,例如下面这样:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a))
b = torch.zeros((4, 2))
print(b)
c = torch.IntTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(c)
d = torch.LongTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(d)
e = torch.DoubleTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(e)
结果为:

6.如果想访问Tensor里的一个元素或者改变它,可以输入如下代码:

print(e[1, 1])
#改变元素值
e[1, 1] = 3
print(e[1, 1])
代码变为:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a))
b = torch.zeros((4, 2))
print(b)
c = torch.IntTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(c)
d = torch.LongTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(d)
e = torch.DoubleTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(e)
print(e[1, 1])
#改变元素值
e[1, 1] = 3
print(e[1, 1])
结果为:

说明原来4的位置数值变为了3

7.最重要的是Tensor和Numpy之间的转换,例如我们把e变为numpy类型,添加以下代码:

f = e.numpy()
print(f)
变为:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a))
b = torch.zeros((4, 2))
print(b)
c = torch.IntTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(c)
d = torch.LongTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(d)
e = torch.DoubleTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(e)
print(e[1, 1])
#改变元素值
e[1, 1] = 3
print(e[1, 1])
#转换为Numpy
f = e.numpy()
print(f)
结果为:

可以看到没有tensor()了~

我们再把f变为tensor类型,输入以下代码:

g = torch.from_numpy(f)
print(g)
变为:

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a))
b = torch.zeros((4, 2))
print(b)
c = torch.IntTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(c)
d = torch.LongTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(d)
e = torch.DoubleTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(e)
print(e[1, 1])
#改变元素值
e[1, 1] = 3
print(e[1, 1])
#转换为Numpy
f = e.numpy()
print(f)
#转换为Tensor
g = torch.from_numpy(f)
print(g)
结果为:

可以看到又变成了Tensor类型~

二、Tensor放到GPU上执行
1.通过如下代码判断是否支持GPU:

if torch.cuda.is_available():
    h = g.cuda()
    print(h)
变为

import torch
#定义一个Tensor矩阵
a = torch.Tensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print('{}'.format(a))
b = torch.zeros((4, 2))
print(b)
c = torch.IntTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(c)
d = torch.LongTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(d)
e = torch.DoubleTensor([[1, 2], [3, 4],[5, 6], [7, 8]])
print(e)
print(e[1, 1])
#改变元素值
e[1, 1] = 3
print(e[1, 1])
#转换为Numpy
f = e.numpy()
print(f)
#转换为Tensor
g = torch.from_numpy(f)
print(g)
#将Tensor放在GPU上
if torch.cuda.is_available():
    h = g.cuda()
    print(h)
2.生成结果会慢一下,然后可以看到多了一个device=‘cuda:0’:

三、Tensor总结
1.Tensor和Numpy都是矩阵,区别是前者可以在GPU上运行,后者只能在CPU上

2.Tensor和Numpy互相转化很方便,类型也比较兼容

3.Tensor可以直接通过print显示数据类型,而Numpy不可以,例如:dtype = torch.float64

————————————————
版权声明:本文为CSDN博主「悲恋花丶无心之人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36556893/article/details/86480120

PyTorch 入门实战相关推荐

  1. 网易云课程:深度学习与PyTorch入门实战

    网易云课程:深度学习与PyTorch入门实战 01 深度学习初见 1.1 深度学习框架简介 1.2 pytorch功能演示 2开发环境安装 3回归问题 3.1简单的回归问题(梯度下降算法) 3.3回归 ...

  2. 视频教程-深度学习与PyTorch入门实战教程-深度学习

    深度学习与PyTorch入门实战教程 新加坡国立大学研究员 龙良曲 ¥399.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5元 ↓ ...

  3. PyTorch 入门实战(五)——2013kaggle比赛 猫狗大战的实现

    承接上一篇:PyTorch 入门实战(四)--利用Torch.nn构建卷积神经网络 PyTorch入门实战 1.博客:PyTorch 入门实战(一)--Tensor 2.博客:PyTorch 入门实战 ...

  4. PyTorch 入门实战(三)——Dataset和DataLoader

    承接上一篇:PyTorch 入门实战(二)--Variable 对于Dataset,博主也有着自己的理解: 关于Pytorch中dataset的迭代问题(这就是为什么我们要使用dataloader的原 ...

  5. Pytorch入门+实战系列七:图片风格迁移和GAN

    Pytorch官方文档:https://pytorch.org/docs/stable/torch.html? 1. 写在前面 今天开始,兼顾Pytorch学习, 如果刚刚接触深度学习并且想快速搭建神 ...

  6. PyTorch 入门实战(四)——利用Torch.nn构建卷积神经网络

    承接上一篇:PyTorch 入门实战(三)--Dataset和DataLoader PyTorch入门实战 1.博客:PyTorch 入门实战(一)--Tensor 2.博客:PyTorch 入门实战 ...

  7. PyTorch 入门实战(二)——Variable

    承接上一篇:PyTorch 入门实战(一)--Tensor 如何解决"Can't call numpy() on Variable that requires grad. Use var.d ...

  8. Pytorch入门实战 | 第P3周:天气识别

    ⏲往期文章: 深度学习实战训练 | 第8周:猫狗识别 深度学习实战训练 | 第7周:咖啡豆识别 深度学习实战训练 | 第6周:好莱坞明星识别 深度学习实战训练 | 第5周:运动鞋品牌识别 ☕ Pyto ...

  9. Pytorch入门实战 | 第P2周:彩色图片识别

    难度:新手入门⭐ 语言:Python3.Pytorch

最新文章

  1. 505天,240,000字,我总结了Spring Security 的学习曲线,免费送给大家
  2. UITextView实现PlaceHolder的方式
  3. 创建预留mb21添加附加字段的增强
  4. 洛谷P1014 [NOIP1999 普及组] Cantor 表
  5. JS内置方法(Array)
  6. 用友发布新一代价值分析型eHR软件
  7. timestamp类型的数据如何赋值_VBA一组代码如何搞定赋值给数组arr及回填数据给工作表...
  8. python课程-Python课程
  9. 基于手机系统的实时目标检测
  10. 英文横版游戏《玛丽师傅》源码H5+安卓+IOS三端源码
  11. 从 MVC 到使用 ASP.NET Core 6.0 的Minimal API
  12. 大学计算机应用基础第二版习题答案,《大学计算机应用基础》各章习题参考答案...
  13. 查看电脑开机关机记录
  14. 让AI简单且强大:深度学习引擎OneFlow技术实践
  15. 腾讯位置服务---->(小程序简单使用+显示附近WC步行路线)
  16. fuz 2159 WuYou
  17. 可行方向法的matlab代码,zoutendijk 可行方向法的matlab实现
  18. SAP中多生产版本系统应用选择规则
  19. 不同大小硬盘对拷oracle,如何实现硬盘对拷_大小不一样的硬盘怎么实现对拷?_不同大小硬盘对拷...
  20. 【应用】Python利用高德地图经纬度数据绘制定位

热门文章

  1. boost::spirit模块实现附加语义动作的各种方法的测试程序
  2. boost::adaptors::copied相关的测试程序
  3. boost::mpl模块实现insert_range相关的测试程序
  4. boost::local_function模块实现不可复制的 local_function的测试程序
  5. GDCM:gdcm::UUIDGenerator的测试程序
  6. 宏BOOST_TEST_ALL_WITH的用法实例
  7. ITK:斑点Blob
  8. DCMTK:DSRDocumentTree,DSRDocumentSubTree,DSRDocumentTreeNode和DSRContentItem类的测试程序
  9. DCMTK:从ASCII转储创建DICOM FileFormat或DataSet
  10. VTK:可视化之PointSize