基于Pytorch之深度学习模型数据类型和维度转换个人总结

简介: 基于Pytorch之深度学习模型数据类型和维度转换个人总结

博主近期在学习深度学习模型时,发现这个数据类型转换和维度的重构既细节又容易出错,特总结此篇文章,用于自己回顾和分享给有需要的朋友,总结可能不是很全面,不足之处还望大家多多包涵!

一、数据类型基本主要是:整形、浮点型、字符串型、list列表格式、numpy数组格式、tensor张量格式等。数据类型之间的转换参考下面的代码:

  • 整型转浮点型
a =1
a = float(a) # 整型转浮点型
print(a)

  • 整型转字符串型
a =1
a = str(a) # 整型转字符串型
print(type(a))

  • 整型转tensor格式(包含先转numpy,原因是:若整型直接转换成tensor张量格式后会发生数值溢出,这是内存机制本身设计的问题
import numpy as np
import torch as t
a = 1
a = np.array(a, dtype=np.float32) # 整型转numpy
a = t.LongTensor(a) # numpy转tensor
print(a)

  • 浮点型转整型
a = 1.0
a = int(a) # 浮点型转整型
print(a)

  • 浮点型转字符串型
a = 1.0
a = str(a)  # 浮点型转字符串型
print(type(a))

  • 字符串转整型
s = '666'
s = int(s) # 字符串转整型
print(type(s))

  • 字符串转浮点型
s = '666.0'
s = float(s) # 字符串转浮点型
print(s)
print(type(s))

二、list列表格式、numpy数组格式、tensor格式数据维度之间的转换涉及多维度降维,因此比较容易出错,谨慎为上。

  • 列表list维度降维,下面以二维举例。
a = [[1,2,3],[6,8,5]] # 二维列表
a = [i for item in a for i in item] # 二维双层循环,三维三层循环
print(a)

  • numpy维度降维,分两种情况:(1)针对有维度为1的维度进行压缩实现降维,两种方式(2)针对无维度为1的维度进行重构造实现降维,下面以二维举例。
# 方式一
import numpy
a = numpy.array([[1],[2],[3]])
a = a.squeeze() # 针对有维度为1的维度进行压缩
print(a)

# 方式二
import numpy
a = numpy.array([[1],[2],[3]])
a = numpy.squeeze(a) # 针对有维度为1的维度进行压缩
print(a)

import numpy
a = numpy.array([[1,2],[2,4],[3,5]])
a = [i for item in a for i in item] # 针对无维度为1的维度进行重构造
print(a)

  • tensor维度降维,分两种情况:(1)针对有维度为1的维度进行压缩实现降维,点击打开《python以三维tensor为例详细理解unsqueeze和squeeze函数》文章 作为参考(2)针对无维度为1的维度进行重构造实现降维并转换为list,下面以二维举例。(还有一种方式用for循环结合torch.cat函数进行两个tensor拼接实现,注意:两个tensor除了要拼接的维度外,其他维度数值必须保持一致,否则会报错)
import torch
a = torch.LongTensor([[1,2,3],[6,8,5]])
a = [i.tolist() for item in a for i in item] # 针对无维度为1的维度进行重构造实现降维并转换为list
print(a)

三、总结

数据类型转换和维度降维是结合操作,博主分开阐述是方便大家理解,但在理解后要结合起来对数据进行适当的转换和操作达到自己数据预处理的目的。比如:数据集导入程序是list格式,但我们需要将数据集转换成tensor格式,最后算法模型输出对比时需要降维再对比等,这个例子具体内容详情可以参考博主的下一篇关于GCN(图卷积网络)3.0的文章。

文章知识点与官方知识档案匹配,可进一步学习相关知识

Python入门技能树科学计算基础软件包NumPyNumPy概述214084 人正在系统学习中


相关文章
|
10天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
104 59
|
5天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品市场预测的深度学习模型
使用Python实现智能食品市场预测的深度学习模型
32 5
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的Transformer模型
探索深度学习中的Transformer模型
13 1
|
7天前
|
机器学习/深度学习 算法 开发者
探索深度学习中的优化器选择对模型性能的影响
在深度学习领域,优化器的选择对于模型训练的效果具有决定性作用。本文通过对比分析不同优化器的工作原理及其在实际应用中的表现,探讨了如何根据具体任务选择合适的优化器以提高模型性能。文章首先概述了几种常见的优化算法,包括梯度下降法、随机梯度下降法(SGD)、动量法、AdaGrad、RMSProp和Adam等;然后,通过实验验证了这些优化器在不同数据集上训练神经网络时的效率与准确性差异;最后,提出了一些基于经验的规则帮助开发者更好地做出选择。
|
7天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
23 2
|
6天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
6天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
11天前
|
机器学习/深度学习 数据采集 数据库
使用Python实现智能食品营养分析的深度学习模型
使用Python实现智能食品营养分析的深度学习模型
38 6
|
8天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品储存管理的深度学习模型
使用Python实现智能食品储存管理的深度学习模型
24 2
|
9天前
|
机器学习/深度学习 算法
深度学习中的模型优化策略
【10月更文挑战第35天】在深度学习的海洋中,模型优化是那把能够引领我们抵达知识彼岸的桨。本文将从梯度下降法出发,逐步深入到动量、自适应学习率等高级技巧,最后通过一个实际代码案例,展示如何应用这些策略以提升模型性能。