pytorch数据操作

基本数据操作,都详细注释了,如下:

import torch#5x3的未初始化的Tensor
x = torch.empty(5, 3)
print("5x3的未初始化的Tensor:")
print(x)
print("******************************")#5x3的随机初始化的Tensor:
x = torch.rand(5, 3)
print("5x3的随机初始化的Tensor:")
print(x)
print("******************************")#5x3的long型全0的Tensor:
x = torch.zeros(5, 3, dtype=torch.long)
print("5x3的long型全0的Tensor:")
print(x)
print("******************************")#根据源数据创建
x = [5, 4, 3]
x = torch.tensor(x, dtype=torch.float64)
print("根据源数据创建tensor:")
print(x)
print("******************************")#返回的tensor默认具有相同的torch.dtype和torch.device
#建立一个tensor
x = x.new_ones(5, 3, dtype=torch.float64)
print("建立的tensor")
print(x)
print("******************************")#通过对已有的tensor 指定新的数据类型 创建tensor
x = torch.randn_like(x, dtype=torch.float)
print("通过对已有的tensor 指定新的数据类型 创建tensor:")
print(x)
print("******************************")#通过shape或者size()来获取Tensor的形状:
print("通过shape或者size()来获取Tensor的形状:")
print(x.size())
print(x.shape)
print("******************************")#tensor加法:
y = torch.rand(5, 3)
print(x + y)
print("******************************")#add函数实现tensor相加
print(torch.add(x, y))
print("******************************")#add函数指定输出相加
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
print("******************************")#使用内联函数实现加发
y.add_(x)
print(y)
#PyTorch操作inplace版本都有后缀_, 例如x.copy_(y), x.t_()
print("******************************")#类似numpy的索引方式
y=x[0,:]
y += 2
print(y)
print("修改了y,那么原tensor也会被修改")
print(x[0, :])
print("******************************")#改变形状 view函数
y = x.view(15)
z = x.view(-1, 5)  # -1所指的维度可以根据其他维度的值推出来
print(x.size(), y.size(), z.size())
print("******************************")#view()返回的新Tensor与源Tensor虽然可能有不同的size,但是是共享data的,即更改一个,另一个也会变化
x += 1
print(x)
print(y) # 也加了1
print("******************************")#使用clone函数获得一个真正的数据副本3.
x_clone = x.clone().view(15)
x += 1
print(x)
print(x_clone)
print("******************************")
#使用clone还有一个好处是会被记录在计算图中,即梯度回传到副本时也会传到源Tensor。#另外一个常用的函数就是item(), 它可以将一个标量Tensor转换成一个Python number:
x = torch.randn(1)
print(x)
print(x.item())
print("******************************")#形状不同的tensor进行计算,会触发广播机制
x = torch.arange(1, 3).view(1, 2)
y = torch.arange(0, 3).view(3, 1)
print(x)
print(y)
print(x + y)
print(torch.add(x, y))
#print(x.add_(y))
#由于x和y分别是1行2列和3行1列的矩阵,如果要计算x + y,那么x中第一行的2个元素被广播(复制)到了第二行和第三行,而y中第一列的3个元素被广播(复制)到了第二列。如此,就可以对2个3行2列的矩阵按元素相加。
print("******************************")#索引操作与clone操作不同,不会开辟新的内存,但是运算操作会开辟新的内存
x = torch.tensor([1, 2])
y = torch.tensor([3, 4])
id_before = id(y)
y[:] = y + x
print(id(y) == id_before) # True
print("未开辟新的内存")x = torch.tensor([1, 2])
y = torch.tensor([3, 4])
id_before = id(y)
y = y + x
print(id(y) == id_before) # False
print("开辟了新的内存")print("使用 add函数指定输出也可以避免开辟内存:")
x = torch.tensor([1, 2])
y = torch.tensor([3, 4])
id_before = id(y)
torch.add(x, y, out=y) # y += x, y.add_(x)
print(id(y) == id_before) # True
print("******************************")#Tensor转NumPy:tensor.numpy()
a = torch.ones(5)
b = a.numpy()
print(a, b)
a += 1
print(a, b)
b += 1
print(a, b)#torch.from_numpy
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a, b)
a += 1
print(a, b)
b += 1
print(a, b)#torch.tensor(numpy)这样会开辟新的内存
c = torch.tensor(a)
a += 1
print(a, c)#测试gpu环境
# 以下代码只有在PyTorch GPU版本上才会执行
if torch.cuda.is_available():device = torch.device("cuda")          # GPUy = torch.ones_like(x, device=device)  # 直接创建一个在GPU上的Tensorx = x.to(device)                       # 等价于 .to("cuda")z = x + yprint(z)print(z.to("cpu", torch.double))       # to()还可以同时更改数据类型

输出结果如下:

Microsoft Windows [版本 10.0.18363.1082]
(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\20626>d:D:\>cd workspaceD:\workspace>cd "python Workspace"D:\workspace\python Workspace>cd deeplearning-pytorchD:\workspace\python Workspace\deeplearning-pytorch>activate pytorch_gpuD:\workspace\python Workspace\deeplearning-pytorch>conda.bat activate pytorch_gpu(pytorch_gpu) D:\workspace\python Workspace\deeplearning-pytorch>python chapter-1.py
5x3的未初始化的Tensor:
tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])
******************************
5x3的随机初始化的Tensor:
tensor([[0.7356, 0.2419, 0.0771],[0.2658, 0.9888, 0.8363],[0.7294, 0.4150, 0.9157],[0.8824, 0.1682, 0.8827],[0.7691, 0.0690, 0.8040]])
******************************
5x3的long型全0的Tensor:
tensor([[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0]])
******************************
根据源数据创建tensor:
tensor([5., 4., 3.], dtype=torch.float64)
******************************
建立的tensor
tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]], dtype=torch.float64)
******************************
通过对已有的tensor 指定新的数据类型 创建tensor:
tensor([[ 0.1654, -0.1937,  1.2233],[-0.4828, -0.8176, -0.3672],[ 0.5762,  0.6457, -0.0862],[ 0.9082, -0.3934, -0.3169],[ 0.1841,  0.8648,  1.1849]])
******************************
通过shape或者size()来获取Tensor的形状:
torch.Size([5, 3])
torch.Size([5, 3])
******************************
tensor([[ 1.0382e+00, -4.8804e-04,  2.1988e+00],[-2.5249e-01, -1.7922e-01,  4.7531e-01],[ 1.1131e+00,  7.3895e-01,  5.4079e-01],[ 1.8360e+00, -3.9927e-02, -1.0457e-01],[ 4.7496e-01,  1.6555e+00,  1.2281e+00]])
******************************
tensor([[ 1.0382e+00, -4.8804e-04,  2.1988e+00],[-2.5249e-01, -1.7922e-01,  4.7531e-01],[ 1.1131e+00,  7.3895e-01,  5.4079e-01],[ 1.8360e+00, -3.9927e-02, -1.0457e-01],[ 4.7496e-01,  1.6555e+00,  1.2281e+00]])
******************************
tensor([[ 1.0382e+00, -4.8804e-04,  2.1988e+00],[-2.5249e-01, -1.7922e-01,  4.7531e-01],[ 1.1131e+00,  7.3895e-01,  5.4079e-01],[ 1.8360e+00, -3.9927e-02, -1.0457e-01],[ 4.7496e-01,  1.6555e+00,  1.2281e+00]])
******************************
tensor([[ 1.0382e+00, -4.8804e-04,  2.1988e+00],[-2.5249e-01, -1.7922e-01,  4.7531e-01],[ 1.1131e+00,  7.3895e-01,  5.4079e-01],[ 1.8360e+00, -3.9927e-02, -1.0457e-01],[ 4.7496e-01,  1.6555e+00,  1.2281e+00]])
******************************
tensor([2.1654, 1.8063, 3.2233])
修改了y,那么原tensor也会被修改
tensor([2.1654, 1.8063, 3.2233])
******************************
torch.Size([5, 3]) torch.Size([15]) torch.Size([3, 5])
******************************
tensor([[3.1654, 2.8063, 4.2233],[0.5172, 0.1824, 0.6328],[1.5762, 1.6457, 0.9138],[1.9082, 0.6066, 0.6831],[1.1841, 1.8648, 2.1849]])
tensor([3.1654, 2.8063, 4.2233, 0.5172, 0.1824, 0.6328, 1.5762, 1.6457, 0.9138,1.9082, 0.6066, 0.6831, 1.1841, 1.8648, 2.1849])
******************************
tensor([[4.1654, 3.8063, 5.2233],[1.5172, 1.1824, 1.6328],[2.5762, 2.6457, 1.9138],[2.9082, 1.6066, 1.6831],[2.1841, 2.8648, 3.1849]])
tensor([3.1654, 2.8063, 4.2233, 0.5172, 0.1824, 0.6328, 1.5762, 1.6457, 0.9138,1.9082, 0.6066, 0.6831, 1.1841, 1.8648, 2.1849])
******************************
tensor([-0.5415])
-0.5414556860923767
******************************
tensor([[1, 2]])
tensor([[0],[1],[2]])
tensor([[1, 2],[2, 3],[3, 4]])
tensor([[1, 2],[2, 3],[3, 4]])
******************************
True
未开辟新的内存
False
开辟了新的内存
使用 add函数指定输出也可以避免开辟内存:
True
******************************
tensor([1., 1., 1., 1., 1.]) [1. 1. 1. 1. 1.]
tensor([2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2.]
tensor([3., 3., 3., 3., 3.]) [3. 3. 3. 3. 3.]
[1. 1. 1. 1. 1.] tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
[2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64)
[3. 3. 3. 3. 3.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)
[4. 4. 4. 4. 4.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)
tensor([2, 3], device='cuda:0')
tensor([2., 3.], dtype=torch.float64)(pytorch_gpu) D:\workspace\python Workspace\deeplearning-pytorch>

(pytorch-深度学习系列)pytorch数据操作相关推荐

  1. pytorch深度学习_用于数据科学家的深度学习的最小pytorch子集

    pytorch深度学习 PyTorch has sort of became one of the de facto standards for creating Neural Networks no ...

  2. [PyTorch] 深度学习框架PyTorch中的概念和函数

    Pytorch的概念 Pytorch最重要的概念是tensor,意为"张量". Variable是能够构建计算图的 tensor(对 tensor 的封装).借用Variable才 ...

  3. pytorch深度学习参加平安银行数据大赛,从驾驶行为预测驾驶风险

    比赛链接http://www.datafountain.cn/#/competitions/284/intro 本赛题提供部分客户1分钟级驾驶行为数据及对应客户的赔付率作为训练集,包括经纬度定位及驾驶 ...

  4. 【深度学习系列】数据预处理

    PaddlePaddle的基本数据格式 根据官网的资料,总结出PaddlePaddle支持多种不同的数据格式,包括四种数据类型和三种序列格式: 四种数据类型: dense_vector:稠密的浮点数向 ...

  5. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(2)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅰ

    开源项目地址:d2l-ai/d2l-zh 教材官网:https://zh.d2l.ai/ 书介绍:https://zh-v2.d2l.ai/ 笔记基于2021年7月26日发布的版本,书及代码下载地址在 ...

  6. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(3)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅲ(概率)

    开源项目地址:d2l-ai/d2l-zh 教材官网:https://zh.d2l.ai/ 书介绍:https://zh-v2.d2l.ai/ 笔记基于2021年7月26日发布的版本,书及代码下载地址在 ...

  7. PyTorch深度学习实战:从新手小白到数据科学家电子书

    作者:张敏 著 出版社:电子工业出版社 ISBN:9787121388293 出版时间:2020-08-01 PyTorch深度学习实战:从新手小白到数据科学家

  8. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

  9. 【深度学习】深度学习之Pytorch基础教程!

    作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展,深度学习框架开始大量的出现.尤其是近两年,Google.Facebook.Microsoft等巨头都围绕深度学习重点投资了一系 ...

  10. 《深度学习之PyTorch物体检测实战》—读书笔记

    随书代码 物体检测与PyTorch 深度学习 为了赋予计算机以人类的理解能力与逻辑思维,诞生了人工智能(Artificial Intelligence, AI)这一学科.在实现人工智能的众多算法中,机 ...

最新文章

  1. 人工智能艺术:一场前所未有的新艺术创造
  2. Go-Mega Tutorial 01 - Hello World
  3. Python大法之抛 异常
  4. 【图像】尺度不变特征变换算法(SIFT)
  5. OpenCV学习笔记之图像融合
  6. IE的@cc_on条件编译
  7. 飞鱼科技2019笔试题
  8. 多子群的共生非均匀高斯变异樽海鞘群算法-附代码
  9. Mac上很好用的播放器Elmedia Player
  10. MQ--推模式与拉模式
  11. 深度学习这些年那些超重要的idea回顾总结
  12. 4G内存适合装哪个版本matlab,4G内存装win7 32位还是64位|单条4G内存选32位还是64位系统性能实测...
  13. 3d17340期计算机开机号,便民工作室提供--中国福彩中-心开机号114开机号
  14. Android studio课程设计开发实现---日记APP
  15. uniApp 实现微信小程序和app视频播放flv格式视频监控
  16. 【计算机组成原理】冯诺伊曼结构和计算机性能指标
  17. Mybatis【面试题】
  18. python人工智能方向面试准备_人工智能入门学习路线及就业面试
  19. SSM+社区线上超市购物系统 毕业设计-附源码211704
  20. ng2-ace-editor 在 angular 12+ 高版本中无法经过 Ivy编译问题

热门文章

  1. feign调用多个服务_spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)...
  2. web处理高并发措施
  3. html怎么给code标签添加语言,html code标签怎么用?html code标签的作用解释
  4. oracle 增量设为3 循环_Oracle 差异性增量 和 累计增量 原理(转)
  5. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
  6. 免密登录关闭_微信最新提醒:这个设置再不关闭,你的微信账号就能被别人“免密登录”!...
  7. python列表元素之和_python实现计算列表元素之和
  8. oracle rowed,oracle bitmap索引内部揭密,欢迎补充
  9. python暂停和恢复游戏_pygame游戏之旅 添加游戏暂停功能
  10. vue 分享微信传参_vue实现微信分享链接添加动态参数的方法