基于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 人正在系统学习中


相关文章
|
8天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能社交媒体内容分析
使用Python实现深度学习模型:智能社交媒体内容分析
130 70
|
6天前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
15 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
9天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能新闻生成与校对
使用Python实现深度学习模型:智能新闻生成与校对
32 10
|
2天前
|
机器学习/深度学习 自然语言处理
深度学习中的模型压缩技术:精度与效率的平衡
在深度学习领域,模型压缩技术已经成为一项关键技术。它通过减少模型的参数数量和计算量,实现了模型的轻量化和高效化。本文将介绍几种常见的模型压缩方法,包括参数剪枝、量化、知识蒸馏等,并探讨这些方法如何帮助模型在保持精度的同时提高运行效率。我们将分析每种方法的原理、实现步骤以及优缺点,并通过实验结果对比不同方法的性能表现。最后,我们将讨论模型压缩技术在未来可能的发展方向及其应用前景。
6 1
|
7天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
33 5
|
6天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护
17 1
|
10天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能广告创意生成
使用Python实现深度学习模型:智能广告创意生成
27 4
|
8天前
|
机器学习/深度学习 存储 自然语言处理
深度学习中的模型压缩技术
在现代深度学习应用中,模型的复杂性和体积不断增加,给存储和计算带来了巨大的挑战。为了解决这些问题,模型压缩技术应运而生,并成为研究热点。本文将介绍什么是模型压缩技术,探讨其常见方法及应用实例,分析其在实际应用中的效果和前景。
16 1
|
8天前
|
机器学习/深度学习 存储 自然语言处理
深度学习中的模型压缩技术
在这篇文章中,我们将探讨深度学习领域中的一项重要技术——模型压缩。随着人工智能技术的迅猛发展,深度学习模型变得越来越复杂,但这也带来了计算资源的巨大需求。为了解决这个问题,模型压缩技术应运而生。本文将介绍什么是模型压缩、为什么需要它以及几种常见的模型压缩方法。
15 0
|
6天前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
下一篇
无影云桌面