首页
学习
活动
专区
圈层
工具
发布
44 篇文章
1
机器学习需要掌握的九种工具!
2
PyAOS:大气和海洋科学Python社区
3
地球人工智能研究综述
4
优化物理和机器学习之间的协同作用
5
构建便于气象海洋应用的Anaconda环境(window版本)
6
Python结合Matlab气候数据工具箱CDT
7
用Python复现一篇Nature的研究: 1.数据下载及预处理
8
Python气象数据处理与绘图:相关性分析之散点图
9
Nature | 数据驱动的地球系统深度学习与过程理解
10
Python气象数据处理与绘图:常见的10种图像滤波方法
11
JAMES: 地球系统模式机器学习应用专刊
12
Python可视化 | xarray绘图样式配置
13
xarray系列|WRF模式前处理和后处理
14
Python可视化 | xarray一维数据绘图
15
构建适合大气与海洋应用的Anaconda环境
16
统计学中数据分析方法汇总!
17
Python可视化 | xarray 绘图时序图
18
深度学习 | 时序问题LSTM入门讲解
19
Python可视化 | xarray 二维绘图配色方案设置
20
MeteoInfoLab中如何将格点插值到站点?(附完整代码)
21
利用 pandas 和 xarray 整理气象站点数据
22
tensor与numpy数据类型转换
23
【机器学习基础】|交叉验证及Stacking
24
让数据动起来!用Python制作动画可视化效果,让数据不再枯燥!
25
数据处理 | EOF用法及可视化实例
26
数据处理 | 使用cfgrib加载GRIB文件
27
GISer如何学Python
28
数据下载 | NCEP再分析数据自动批量下载
29
关于滤波和NCL的filwgts_lanczos函数
30
数据处理 | xarray的计算距平、重采样、时间窗
31
数据处理 | xarray的NC数据基础计算(1)
32
基于Python的神经网络模型可视化绘图方法
33
python可视化 | 小波分析——​海温数据的时频域分解
34
Python精美地理可视化绘制
35
Python的常用库的数组定义及常用操作
36
Python可视化 | 温度、水深&CTRL向量空间分布图
37
python可视化 | contour、contourf、cartopy补充
38
NCL专辑 | 常用插值函数集锦
39
数值模式常用参数化方案简析及引用文献
40
数据处理与可视化 | 站点插值格点+空间区域掩膜
41
自动化工程 | 利用Python自动生成降雨量统计分析报告
42
图解NumPy:常用函数的内在机制
43
用手机运行你的Python代码
44
数据可视化 | 双Y轴可视化绘制方法(Python、R两种方法)

tensor与numpy数据类型转换

我们使用TensorFlow、pytorch等机器学习库的时候,经常涉及到要把输入的数据集转为tensor型,而且模型输出的结果也会是tensor型的。

事实上,tensor与numpy虽然都是用来表示多维数组的,但是tensor弥补了numpy不能创建张量函数和求导,也不支持GPU的缺陷。可以说,tensor数据类型主要就是为了深度学习而生的。

因为TensorFlow已经逐渐过时了,我现在主要使用的也是pytorch,所以下面就主要以pytorch为例,来展示一下tensor数据与numpy的转换吧~

假设我们已经用pytorch训练好了一个模型,名为model,用它来生成图片分类结果,那么它输出的预测结果pred,就是tensor型的,pred_np就是将其转为numpy格式的结果。

代码语言:javascript
复制
from torch.autograd import Variable
for i, (images,labels) in enumerate(val_loader):
    images = Variable(images.cuda())
    output = model(images)
    prob, pred = output.topk(maxk, 1, True, True)
    pred_np = pred.cpu().detach().numpy()

我们来看一下tensor类型的pred长什么样子:

这里的device='cuda:0'昭示了我用得起GPU的满满的炫耀。

pred.cpu().detach().numpy()就是把GPU下tensor类型的pred,转为CPU下的numpy格式:

tensor型的数据,是不能像numpy一样直接进行加减乘除各种运算的,以pytorch框架为例,它的很多运算都必须在torch框架下才可以。比如相加是torch.add(),相除是torch.div(),求绝对值是torch.abs(),求幂是torch.pow(),等等。不过关于tensor的计算,我们实际当中应用的很少,更多的是把模型输出的tensor型的结果,转化为numpy的数值,方便后面的操作,比如说,将模型的分类结果整合到pandas数组里面,集中进行展示:

代码语言:javascript
复制
import pandas as pd
import glob
defect_label_order = ['强降水', '冰雹', '大风']
# 与中文标记一一对应
defect_code = {
    0:  '强降水',
    1:  '冰雹',
    2:  '大风',
    }
result_list = glob.glob(opt.img_root_val + "/*.png")
result_pd = pd.DataFrame(result_list, columns=["ImageName"])
# 获取文件名称
result_pd["file_name"]=result_pd["ImageName"].apply(lambda x:x.split("/")[-1])
# 获取预测分类的数字
result_pd["pred_num"] = pred_np
# 将数字标记转化为标签名称
result_pd["result"]=result_pd["pred_num"].apply(lambda x:defect_code[x])
print(result_pd)

这样,对于每个样本的分类结果就可以直观地直接print到屏幕上:

下一篇
举报
领券