关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化
https://blog.csdn.net/zz2230633069/article/details/82669546
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)元素总数可以变化:
- '''
- tf和numpy之间的转化
- '''
- import tensorflow as tf
- a= tf.zeros((3,2))
- sess=tf.Session()
- sess.run(tf.global_variables_initializer())
- print("type(a)=",type(a)) # type(a)= <class 'tensorflow.python.framework.ops.Tensor'>
- #转化为numpy数组
- a_np=a.eval(session=sess)
- print("type(a_np)=",type(a_np)) # type(a_np)= <class 'numpy.ndarray'>
- #转化为tensor
- a2= tf.convert_to_tensor(a_np)
- print("type(a2)=",type(a2)) # type(a2)= <class 'tensorflow.python.framework.ops.Tensor'>
3.torch类型:torch.tensor 图片的计算格式是(C,H,W)或者(batch,C,H,W)
numpy类型不能直接作为Tensor的输入,所以在运用torch之前一定要进行转化。
- from PIL import Image
- import torch
- import numpy as np
- import matplotlib.pyplot as plt
- a=Image.open('/home/zzp/um_lane_000000.png') # 加载图片数据,返回的是一个PIL类型
- b=np.array(a).astype(np.float32) # 先将PIL类型转化成numpy类型,并且把数据变成浮点数
- c=b.transpose((2,0,1)) # 调整成torch的通道
- d=torch.from_numpy(c).float() # 再将numpy类型转化成torch.tensor类型
- # 或者另外一种加载图片的方式
- import scipy.misc
- import torch
- import numpy as np
- a=scipy.misc.imread('/home/zzp/um_lane_000000.png') # 加载图片数据,返回的是一个numpy类型
- c=a.transpose((2,0,1)).astype(np.float32) # 直接调整成torch的通道,不需要转化成numpy类型了,还是要变为浮点数
- d=torch.from_numpy(c).float() # 再将numpy类型转化成torch.tensor类型
- # 三种加载图像的方法
- a=Image.open('/home/zzp/um_lane_000000.png')
- b=scipy.misc.imread('/home/zzp/um_lane_000000.png')
- c=plt.imread('/home/zzp/um_lane_000000.png')
- #显示
(1)在元素总数不变的情况下
(2)元素总数可以变化
关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化以及相互转化的更多相关文章
- torch.tensor(),torch.Tensor()
Pytorch tensor操作 https://www.cnblogs.com/jeshy/p/11366269.html 我们需要明确一下,torch.Tensor()是python类,更明 ...
- 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. ...
- torch.Tensor和numpy.ndarray
1. torch.Tensor和numpy.ndarray相互转换 import torch import numpy as np # <class 'numpy.ndarray'> np ...
- PyTorch官方中文文档:torch.Tensor
torch.Tensor torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU te ...
- 解决Tensorflow ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray)
问题描述 在将一个数组送入tensorflow训练时,报错如下: ValueError: Failed to convert a NumPy array to a Tensor (Unsupporte ...
- TensorFlow使用基础-Tensor
使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识 :• 使用图 (graphs) 来表示计算 .• 在会话 ( Session ) 中执行图 .• 使用张量 (te ...
- torch Tensor学习:切片操作
torch Tensor学习:切片操作 torch Tensor Slice 一直使用的是matlab处理矩阵,想从matlab转到lua+torch上,然而在matrix处理上遇到了好多类型不匹配问 ...
- torch.Tensor文档学习笔记
A torch.Tensor is a multi-dimensional matrix containing elements of a single data type. 张量(torch.Ten ...
- [深度学习] Pytorch学习(一)—— torch tensor
[深度学习] Pytorch学习(一)-- torch tensor 学习笔记 . 记录 分享 . 学习的代码环境:python3.6 torch1.3 vscode+jupyter扩展 #%% im ...
随机推荐
- [简短问答]LODOP打印不清晰
用什么语句输出的:使用的的是什么语句输出的,是ADD_PRINT_TEXT纯文本,还是html的超文本. 超文本不清晰:如果用的是ADD_PRINT_HTML ,换成 ADD_PRINT_HTM试试, ...
- WinForm SetWindowPos窗口置顶使用说明
就是有时候窗口不能够成功置顶,这时需要重新切换下标签,就可以置顶了,本文介绍C# SetWindowPos实现窗口置顶的方法: [DllImport("user32.dll", C ...
- jvm面试常见题
背景:jvm相关题目面试必问,后面要深入的进行总结. JVM 面试知识整理 jvm调优命令 调优工具 Minor GC ,Full GC 触发条件 Minor GC触发条件:当Eden区满时,触发Mi ...
- pip修改成国内镜像源
临时指定镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn 永久修改镜像源 linux下,修改 ~/.pip/pip ...
- eslint 验证vue文件 报错 unexpected token =解决方法
解决方案:.eslintrc更改文件配置 { "extends": [ 'standard' ], "parserOptions": { "parse ...
- Integer.highestOneBit(int i)方法的作用与底层实现
在Integer类中有这么一个方法,你可以给它传入一个数字,它将返回小于等于这个数字的一个2的幂次方数.这个方法就是highestOneBit(int i). 比如下面的Demo,注意方法的输入与返回 ...
- Django 修改该项目文件夹、项目名及项目文件夹中同名文件夹,报错 ModuleNotFoundError: No module named 'untitled'
如果你直接重构项目文件夹名及重构项目名和重构项目文件夹内同名文件夹 执行项目报错 ModuleNotFoundError: No module named 'untitled' 请执行以下操作
- mysql网文收录
1.分布式事务 1) 聊聊分布式事务,再说说解决方案 https://www.cnblogs.com/savorboard/p/distributed-system-transaction-cons ...
- 【C#】上机实验九
1. 设计一个Windows登陆窗体应用程序,能够实现根据现有表中数据模拟登陆,并设置相关属性,具体界面如下. 可能使用到的类: (1)SqlConnection (2)SqlCommand (3)S ...
- as3效率优化
1.改进算法无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了 ...