关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化

https://blog.csdn.net/zz2230633069/article/details/82669546

2018年09月12日 22:56:50 一只tobey 阅读数:727

1.numpy类型:numpy.ndarray  对于图片读取之后(H,W,C)或者(batch,H,W,C)

(1)在元素总数不变的情况下:numpy类型的可以直接使用方法numpy.reshape任意改变大小,numpy.expand_dims增加维度,大小是1(这个函数可以参考numpy.expand_dims的用法

(2)元素总数可以变化:scipy.misc.imresize(a,size)

2.TensorFlow的类型:tensorflow.python.framework.ops.tensor  图片的计算格式(H,W,C)或者(batch,H,W,C)

(1)在元素总数不变的情况下:numpy可以直接作为Tensor的输入,一旦被放在tf的函数下则失去了numpy的使用方法。tf.expand_dims在指定维度增加1维,大小为1;tf.squeeze刚好相反,删掉维度为1的轴(这两个函数可以参考tf.expand_dims和tf.squeeze函数);

(2)元素总数可以变化:

  1. ‘‘‘
  2. tf和numpy之间的转化
  3. ‘‘‘
  4. import tensorflow as tf
  5.  
  6. a= tf.zeros((3,2))
  7. sess=tf.Session()
  8. sess.run(tf.global_variables_initializer())
  9.  
  10. print("type(a)=",type(a)) # type(a)= <class ‘tensorflow.python.framework.ops.Tensor‘>
  11.  
  12. #转化为numpy数组
  13. a_np=a.eval(session=sess)
  14. print("type(a_np)=",type(a_np)) # type(a_np)= <class ‘numpy.ndarray‘>
  15. #转化为tensor
  16. a2= tf.convert_to_tensor(a_np)
  17. print("type(a2)=",type(a2)) # type(a2)= <class ‘tensorflow.python.framework.ops.Tensor‘>
  18.  
  19.  

3.torch类型:torch.tensor  图片的计算格式是(C,H,W)或者(batch,C,H,W)

numpy类型不能直接作为Tensor的输入,所以在运用torch之前一定要进行转化。

  1. from PIL import Image
  2. import torch
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. a=Image.open(‘/home/zzp/um_lane_000000.png‘) # 加载图片数据,返回的是一个PIL类型
  6. b=np.array(a).astype(np.float32) # 先将PIL类型转化成numpy类型,并且把数据变成浮点数
  7. c=b.transpose((2,0,1)) # 调整成torch的通道
  8. d=torch.from_numpy(c).float() # 再将numpy类型转化成torch.tensor类型
  9.  
  10. # 或者另外一种加载图片的方式
  11. import scipy.misc
  12. import torch
  13. import numpy as np
  14. a=scipy.misc.imread(‘/home/zzp/um_lane_000000.png‘) # 加载图片数据,返回的是一个numpy类型
  15. c=a.transpose((2,0,1)).astype(np.float32) # 直接调整成torch的通道,不需要转化成numpy类型了,还是要变为浮点数
  16. d=torch.from_numpy(c).float() # 再将numpy类型转化成torch.tensor类型
  17.  
  18. # 三种加载图像的方法
  19. a=Image.open(‘/home/zzp/um_lane_000000.png‘)
  20. b=scipy.misc.imread(‘/home/zzp/um_lane_000000.png‘)
  21. c=plt.imread(‘/home/zzp/um_lane_000000.png‘)
  22. #显示

(1)在元素总数不变的情况下

(2)元素总数可以变化

原文地址:https://www.cnblogs.com/fengff/p/10882817.html

时间: 2024-08-30 03:15:28

关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化的相关文章

Python中 list, numpy.array, torch.Tensor 格式相互转化

1.1 list 转 numpy ndarray = np.array(list) 1.2 numpy 转 list list = ndarray.tolist() 2.1 list 转 torch.Tensor tensor=torch.Tensor(list) 2.2 torch.Tensor 转 list 先转numpy,后转list list = tensor.numpy().tolist() 3.1 torch.Tensor 转 numpy ndarray = tensor.numpy

PyTorch 1.0 中文文档:torch.Tensor

译者:hijkzzz torch.Tensor 是一种包含单一数据类型元素的多维矩阵. Torch定义了八种CPU张量类型和八种GPU张量类型: Data type dtype CPU tensor GPU tensor 32-bit floating point torch.float32 or torch.float torch.FloatTensor torch.cuda.FloatTensor 64-bit floating point torch.float64 or torch.do

torch.Tensor文档学习笔记

A torch.Tensor is a multi-dimensional matrix containing elements of a single data type. 张量(torch.Tensor)是包含单个数据类型元素的多维矩阵. 1.张量定义了如下八种CPU张量类型和八种GPU张量类型: #CPU对应八种数据类型,GPU对应也有八种数据类型,如torch.cuda.FloatTensor([]) torch.FloatTensor([]) torch.DoubleTensor([]

Tensorflow之改变tensor形状

https://www.tensorflow.org/versions/r0.12/api_docs/python/array_ops.html#reshape 例子: # tensor 't' is [1, 2, 3, 4, 5, 6, 7, 8, 9] # tensor 't' has shape [9] reshape(t, [3, 3]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # tensor 't' is [[[1, 1], [2, 2]], #

python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量,向量和张量. 从python内存角度理解,就是一个数值,长度为1,并且不是一个序列: 从numpy与tensorflow数学角度理解,就是一个标量,shape为(),其轴为0: [1,2,3,4,5,6] 从python内存角度理解,就是1*6或者长度为6的一个序列: 从numpy与tensorf

keras 报错 ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: &#39;Tensor(&quot;embedding_1/random_uniform:0&quot;, shape=(5001, 128), dtype=float32)&#39;

在服务器上训练并保存模型,复制到本地之后load_model()报错: ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("embedding_1/random_uniform:0", shape=(5001, 128), dtype=float32)' 原因:服务器和本地的运行环境配置不同 查看本地keras版本: In [1]: import kera

Keras (Tensor conversion requested dtype int32 for Tensor with dtype float32: &#39;Tensor(&quot;embedding_1/random_uniform:0&quot;, shape=(20000, 100), dtype=float32)&#39;)

这个问题出现根本原因是keras以及tensorflow的版本(服务器与本地)不一致 通过 Python import keras,tensorflow keras.__version__ tensorflow.__version__ 查看版本 然后通过 pip uninstall XXXX pip install install XXX版本号指定安装版本使得服务器与本机版本一致 本以为这个操作就可以解决问题结果依然还是Tensor conversion requested dtype int3

IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number

将datra[0]换成item() 即可 原文地址:https://www.cnblogs.com/blogwangwang/p/11985750.html

Numpy/Pytorch之数据类型与强制转换

1.数据类型简介 Numpy NumPy 支持比 Python 更多种类的数值类型. 下表显示了 NumPy 中定义的不同标量数据类型. Pytorch Torch定义了七种CPU张量类型和八种GPU张量类型,这里我们就只讲解一下CPU中的,其实GPU中只是中间加一个cuda即可,如torch.cuda.FloatTensor: torch.FloatTensor(2,3) 构建一个2*3 Float类型的张量 torch.DoubleTensor(2,3) 构建一个2*3 Double类型的张