#tensor和numpy

import torch

import numpy as np

numpy_tensor = np.random.randn(3,4)

print(numpy_tensor)

#将numpy的ndarray转换到tendor上

pytorch_tensor1 = torch.Tensor(numpy_tensor)

pytorch_tensor2 = torch.from_numpy(numpy_tensor)

print(pytorch_tensor1)

print(pytorch_tensor2)

#将pytorch的tensor转换到numpy的ndarray

numpy_array = pytorch_tensor1.numpy()   #如果pytorch在cpu上

print(numpy_array)

#tensor的一些属性,得到tensor的大小

print(pytorch_tensor1.shape)

print(pytorch_tensor1.size())

print(pytorch_tensor1.type()) #得到tensor的数据类型

print(pytorch_tensor1.dim()) #得到tensor的维度

print(pytorch_tensor1.numel()) #得到tensor所有元素的个数

x = torch.rand(3,2)

x.type(torch.DoubleTensor)

print(x)

np_array = x.numpy()

print(np_array.dtype)

[[ 1.05174423  1.09272735  0.46027768 -0.03255727]
[ 0.57027229 1.22165706 -0.77909099 -0.17678552]
[ 0.02112402 -1.08971068 0.72317744 -1.45482622]]
tensor([[ 1.0517, 1.0927, 0.4603, -0.0326],
[ 0.5703, 1.2217, -0.7791, -0.1768],
[ 0.0211, -1.0897, 0.7232, -1.4548]])
tensor([[ 1.0517, 1.0927, 0.4603, -0.0326],
[ 0.5703, 1.2217, -0.7791, -0.1768],
[ 0.0211, -1.0897, 0.7232, -1.4548]], dtype=torch.float64)
[[ 1.0517442 1.0927273 0.46027768 -0.03255726]
[ 0.57027227 1.221657 -0.779091 -0.17678553]
[ 0.02112402 -1.0897107 0.72317743 -1.4548262 ]]
torch.Size([3, 4])
torch.Size([3, 4])
torch.FloatTensor
2
12
tensor([[0.1810, 0.5168],
[0.9859, 0.1294],
[0.9262, 0.6952]])
float32

#Tensor的操作1

import torch

x = torch.ones(2,3)

print(x)

print(x.type())

x = x.long()

print(x.type())

x = x.float()

print(x.type())

y = torch.rand(3,4)

print(y)

#沿着行取最大值

maxval,maxindex = torch.max(y,dim=1)

print(maxval,'\n',maxindex)

#沿着行对y求和

sum = torch.sum(y,dim=1)

print(sum)

tensor([[1., 1., 1.],
[1., 1., 1.]])
torch.FloatTensor
torch.LongTensor
torch.FloatTensor
tensor([[0.8910, 0.0130, 0.9600, 0.6760],
[0.5184, 0.6240, 0.9589, 0.2151],
[0.6904, 0.3474, 0.7502, 0.2055]])
tensor([0.9600, 0.9589, 0.7502])
tensor([2, 2, 2])
tensor([2.5400, 2.3164, 1.9936])

#Tensor操作2

import torch

x = torch.rand(3,2)

print(x)

print(x.size())

#增加一个维度

x = x.unsqueeze(0)

print(x.size())

#减少一个维度

x = x.squeeze(0)

print(x.size())

#增加回来

x = x.unsqueeze(1)

print(x.size())

#使用permute和transpose来对矩阵维度进行变换

#permute 可以重新排列tensor的维度

#transpose 可以交换两个维度

x = x.permute(1,0,2)

print(x.size())

x = x.transpose(0,2)

print(x.size())

tensor([[0.9131, 0.2160],
[0.0987, 0.5013],
[0.1715, 0.8862]])
torch.Size([3, 2])
torch.Size([1, 3, 2])
torch.Size([3, 2])
torch.Size([3, 1, 2])
torch.Size([1, 3, 2])
torch.Size([2, 3, 1])

#使用view对tensor进行reshape

import torch

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

print(x.shape)

x = x.view(-1,5)

print(x.size())

x = x.view(60)

print(x.shape)

#两个Tensor求和

a = torch.rand(3,4)

b = torch.rand(3,4)

c = a + b

print(c)

z = torch.add(a,b)

print(z)

torch.Size([3, 4, 5])
torch.Size([12, 5])
torch.Size([60])
tensor([[0.8822, 1.3766, 1.3586, 0.8951],
[1.0096, 0.5511, 0.2035, 0.9684],
[1.2502, 0.0963, 1.3955, 0.9479]])
tensor([[0.8822, 1.3766, 1.3586, 0.8951],
[1.0096, 0.5511, 0.2035, 0.9684],
[1.2502, 0.0963, 1.3955, 0.9479]])

import torch

x = torch.ones(4,4)

print(x)

x[1:3,1:3] = 2

print(x)

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

pytorch之Tensor的更多相关文章

  1. 对pytorch中Tensor的剖析

    不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...

  2. pytorch中tensor数据和numpy数据转换中注意的一个问题

    转载自:(pytorch中tensor数据和numpy数据转换中注意的一个问题)[https://blog.csdn.net/nihate/article/details/82791277] 在pyt ...

  3. [Pytorch]Pytorch中tensor常用语法

    原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...

  4. [Pytorch]Pytorch的tensor变量类型转换

    原文:https://blog.csdn.net/hustchenze/article/details/79154139 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩 ...

  5. Pytorch的tensor数据类型

    基本类型 torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU tensor GPU ...

  6. pytorch中tensor张量数据基础入门

    pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...

  7. pytorch之Tensor与Variable的区别

    首先在变量的操作上:Tensor对象支持在原对象内存区域上修改数据,通过“+=”或者torch.add()方法而Variable不支持在原对象内存区域上修改数据Variable对象可求梯度,并且对Va ...

  8. pytorch 创建tensor的几种方法

    tensor默认是不求梯度的,对应的requires_grad是False. 1.指定数值初始化 import torch #创建一个tensor,其中shape为[2] tensor=torch.T ...

  9. pytorch中tensor的属性 类型转换 形状变换 转置 最大值

    import torch import numpy as np a = torch.tensor([[[1]]]) #只有一个数据的时候,获取其数值 print(a.item()) #tensor转化 ...

随机推荐

  1. Exchange Server 产品路线图 及 补丁下载

    Exchange Server RU listExchange Server and Update Rollup Build Numbers -TechNet Articles -United Sta ...

  2. codeforces 803G Periodic RMQ Problem

    codeforces 803G Periodic RMQ Problem 题意 长度为\(1e5\)的数组复制\(1e4\)次,对新的数组进行区间覆盖和区间最小值查询两种操作,操作次数\(1e5\). ...

  3. java多态-向上转型和向下转型

    向上转型:符合“is a”,是安全的,子类向上到父类,多余的属性和方法会丢弃 向下转型:不安全的,用instanceof提前判断一下,以免抛出异常 instanceof用法: result = obj ...

  4. 理解活在IPHONE中的那些APP (五)

    为了让App活起来 上一篇简单的说了一下关于IOS的一些事情,现在有必要深入了解一些对于让App活起来比较关键的信息.比如IOS系统的架构,这个我就不赘述了,请移步http://blog.csdn.n ...

  5. (九)Linux查看用户登录的命令

    用户登录查看命令 w 含义:就这么简单,一个字母w就是一个命令.查看登录用户信息. 输出的结果的含义: USER       登录的用户名 TTY        登录终端 FROM      从哪个I ...

  6. 2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用

    2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用 目录 实验内容与步骤 一个主动攻击实践 MS08-067(失败) ms17_010_psexec(成功且唯一) 一个针 ...

  7. Kali-linux物理访问攻击

    物理访问攻击与提升用户的权限类似.即当一个普通用户登录到系统中,破解本地其他用户账户的密码.在Linux中,普通用户可以通过su命令代替其他用户执行某些操作,意味着该用户能够在Linux/Unix系统 ...

  8. Qt之操作数据库(SQLite)实例

    QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持.QSqlDatabase对象象征了数据库的关联.Qt使用驱动 ...

  9. 学习VCL之路(1)

    在TObject类中,有一个Dispatch()方法和一个DefaultHandler()方法,它们都是与消息分发机制相关的. Dispatch()负责将特定的消息分发给合适的消息处理函数.首先它会在 ...

  10. .NET Core中NETSDK1061错误解决(转载)

    NETSDK1061错误解决 在vs生成和运行都正常,发布的时候报错 .netcore控制台项目引用另一个类库 错误信息 NETSDK1061: 项目是使用 Microsoft.NETCore.App ...