pytorch之Tensor
#tensor和numpy
import torch
import numpy as npnumpy_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 torchx = 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的更多相关文章
- 对pytorch中Tensor的剖析
不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...
- pytorch中tensor数据和numpy数据转换中注意的一个问题
转载自:(pytorch中tensor数据和numpy数据转换中注意的一个问题)[https://blog.csdn.net/nihate/article/details/82791277] 在pyt ...
- [Pytorch]Pytorch中tensor常用语法
原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...
- [Pytorch]Pytorch的tensor变量类型转换
原文:https://blog.csdn.net/hustchenze/article/details/79154139 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩 ...
- Pytorch的tensor数据类型
基本类型 torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU tensor GPU ...
- pytorch中tensor张量数据基础入门
pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...
- pytorch之Tensor与Variable的区别
首先在变量的操作上:Tensor对象支持在原对象内存区域上修改数据,通过“+=”或者torch.add()方法而Variable不支持在原对象内存区域上修改数据Variable对象可求梯度,并且对Va ...
- pytorch 创建tensor的几种方法
tensor默认是不求梯度的,对应的requires_grad是False. 1.指定数值初始化 import torch #创建一个tensor,其中shape为[2] tensor=torch.T ...
- pytorch中tensor的属性 类型转换 形状变换 转置 最大值
import torch import numpy as np a = torch.tensor([[[1]]]) #只有一个数据的时候,获取其数值 print(a.item()) #tensor转化 ...
随机推荐
- 【转】深入理解 Session 与 Cookie
Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简单又复 ...
- Window各种命令补
- 如何恢复在Windows 10中被永久删除的照片?
照片被误删除了需要恢复?这里推荐一款软件:winutilities.使用WinUtilities文件恢复向导允许您通过简单的点击恢复已删除的照片或从Windows 10回收站中恢复被删除的照片. 恢复 ...
- java内部类之成员内部类实例
第一个是如何实现同时继承两个类 public class MultiExtendsDemo { public static void main(String[] args) { // TODO Aut ...
- cgic程序的编写遇到的问题
cgic程序的编写 今天使用cgic库编写了一些cgi的代码,结果在编译的时候出了很多错误,在这里分享出来算是给自己做个笔记,虽然都是小问题但是急需解决的时候还是很麻烦的. 代码结构: login_c ...
- Django F对象的使用
概念 class FF()是代表模型字段的值,也就是说对于一些特殊的字段的操作,我们不需要用Python把数据先取到内存中,然后操作,在存储到db中了. 场景 例1:我们有个统计点击量的字段,每次更新 ...
- 【[CQOI2016]手机号码】
递推版的数位dp 绝对的暴力美学 我们设\(dp[l][i][j][0/1][0/1][0/1]\)表示到了第\(l\)位,这一位上选择的数是\(i\),\(l-1\)位选择的数是\(j\),第一个\ ...
- Sublime Text 3中文乱码问题解决
Sublime Text 3是我MacBook Pro最喜欢的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文 ...
- Spyder中figure显示设置
Spyder是Python的一个IDE.和其他的Python的IDE相比,它最大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改数组的值. 如果不是进行大规模的工程开发,重点专注 ...
- Linux内存管理学习笔记——内存寻址
最近开始想稍微深入一点地学习Linux内核,主要参考内容是<深入理解Linux内核>和<深入理解Linux内核架构>以及源码,经验有限,只能分析出有限的内容,看完这遍以后再更深 ...