深度学习篇---数据存储类型
文章目录
- 前言
- 第一部分:C语言中的数据存储类型
- 1. char(通常是8位)
- 优点
- 缺点
- 2. short(通常是16位)
- 优点
- 缺点
- 3. int(通常是32位)
- 优点
- 缺点
- 4. long(通常是32位或64位)
- 优点
- 缺点
- 5. long long(通常是64位)
- 优点
- 缺点
- 6. float(通常是32位)
- 优点
- 缺点
- 7. double(通常是64位)
- 优点
- 缺点
- 第二部分:Python中的数据存储类型
- 1. int(整数类型)
- 优点
- 缺点
- 2. float(浮点数类型)
- 优点
- 缺点
- 3. complex(复数类型)
- 优点
- 缺点
- 4. bool(布尔类型)
- 优点
- 缺点
- 5. bytes(字节类型)
- 优点
- 缺点
- 6. str(字符串类型)
- 优点
- 缺点
- 7. list(列表类型)
- 优点
- 缺点
- 8. tuple(元组类型)
- 优点
- 缺点
- 9. dict(字典类型)
- 优点
- 缺点
- 第三部分:深度学习中的数据存储类型
- float32的优点
- 1.精度与范围
- 2.硬件支持
- 3.兼容性
- 其他数据类型
- 1.float16(半精度浮点数):
- 优点
- 缺点
- 应用
- 2.int32(32位整数):
- 3.int64(64位整数):
- 4.bool(布尔型):
- 总结
前言
以上就是今天要讲的内容,本文仅仅介绍了C、Python以及深度学习中的数据类型。
第一部分:C语言中的数据存储类型
在C语言中,不同的存储类型有不同的位数,这些位数决定了变量的取值范围、精度以及内存占用。以下是一些常见的存储类型及其位数,以及它们的优劣点:
1. char(通常是8位)
优点
占用内存最少,适合存储小范围的数据。
适合处理ASCII字符。
缺点
取值范围有限,通常为**-128到127(有符号)或0到255(无符号)**。
对于需要更大范围的数据不适用。
2. short(通常是16位)
优点
取值范围比char大,通常为**-32768到32767(有符号)或0到65535(无符号)。**
占用内存比int少,适合在内存受限的情况下使用。
缺点
对于一些需要更大范围的数据仍然不够用。
在某些平台上,访问速度可能不如int。
3. int(通常是32位)
优点
取值范围较大,通常为-2,147,483,648到2,147,483,647(有符号)或0到4,294,967,295(无符号)。
在大多数现代平台上,int是整数类型中的标准选择,访问速度通常较快。
缺点
占用内存比short和char多。
对于非常大的数值,取值范围仍然有限。
4. long(通常是32位或64位)
优点
在64位平台上,long通常为64位,提供了更大的取值范围,通常为-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符号)。
适合处理需要更大范围的数据。
缺点
在32位平台上,long与int相同,为32位。
占用内存比int多。
5. long long(通常是64位)
优点
提供了非常大的取值范围,适合处理极大数值。
在32位和64位平台上都是64位,提供了跨平台的兼容性。
缺点
占用内存是所有整数类型中最多的。
在一些老平台上可能不被支持。
6. float(通常是32位)
优点
占用内存比double少。
对于大多数科学计算和工程应用来说,精度足够。
缺点
精度不如double。
对于需要极高精度的计算可能不够用。
7. double(通常是64位)
优点
提供了更高的精度,适合科学和工程计算。
在大多数现代平台上是标准的双精度浮点数类型。
缺点
占用内存是浮点类型中最多的。
对于一些不需要高精度的应用来说,可能过于奢侈。
选择合适的存储类型时,需要根据应用的需求、内存限制、性能要求以及数据的取值范围来决定。通常,选择最小的适合数据范围的类型可以节省内存并提高效率。
第二部分:Python中的数据存储类型
在Python中,不像C语言那样直接指定变量的位数,因为Python是一种高级语言,它抽象了底层的内存管理。不过,Python中的数据类型仍然有不同的内存占用和适用场景。以下是一些常见的Python数据类型及其优劣点:
1. int(整数类型)
优点
Python 3中的int类型没有固定的大小限制,可以处理任意大小的整数,只受限于可用内存。
简单易用,自动处理整数溢出。
缺点
对于非常大的整数,计算速度可能会变慢。
占用内存比固定大小的整数类型多。
2. float(浮点数类型)
优点
适合表示小数和分数。
在大多数现代平台上,float通常是64位双精度浮点数。
缺点
精度有限,不能精确表示所有实数(例如,0.1 + 0.2 不等于 0.3)。
对于需要极高精度的计算,可能不够用。
3. complex(复数类型)
优点
可以轻松表示复数。
内置了复数运算的支持。
缺点
占用内存是浮点数的两倍,因为复数由实部和虚部两个浮点数组成。
对于不需要复数运算的场景来说,使用复数类型是不必要的。
4. bool(布尔类型)
优点
适合表示真**(True)或假(False)**的值。
在内部,布尔值通常占用一个字节。
缺点
除了表示真或假之外,布尔类型没有其他用途。
虽然内存占用小,但在大多数情况下,这并不是一个考虑因素。
5. bytes(字节类型)
优点
适合处理二进制数据。
占用内存与数据长度成正比。
缺点
不能直接表示文本字符串,需要编码和解码。
对于非二进制数据处理不适用。
6. str(字符串类型)
优点
适合处理文本数据。
支持多种编码,如UTF-8,可以处理国际化文本。
缺点
相对于字节类型,字符串类型在内存中占用更多空间,因为每个字符可能占用多个字节。
字符串操作(如连接和比较)可能比字节操作慢。
7. list(列表类型)
优点
可以存储任意类型的元素。
提供了丰富的操作方法,如append、pop等。
缺点
访问和插入操作的时间复杂度较高(O(n))。
占用内存较多,因为列表在内部维护了额外的信息(如元素数量)。
8. tuple(元组类型)
优点
不可变,可以作为字典的键。
占用内存通常比列表少,因为元组是不可变的。
缺点
元组一旦创建,其内容不能更改。
功能性不如列表丰富。
9. dict(字典类型)
优点
提供了快速的键值对查找。
键值对形式的数据结构非常适合表示关联数组。
缺点
占用内存较多,因为字典在内部维护了哈希表。
键必须是不可变类型。
选择合适的存储类型时,需要考虑数据的特点、操作的频繁程度以及内存的使用效率。Python的数据类型选择更侧重于数据结构和算法的适用性,而不是底层的位数。
第三部分:深度学习中的数据存储类型
在深度学习中,经常使用**float32(32位浮点数)**作为默认的数据类型,原因如下:
float32的优点
1.精度与范围
精度与范围: float32提供了足够的精度来表示大多数深度学习模型中的权重和梯度,同时其数值范围也足够大,可以覆盖大多数训练过程中遇到的数值。
2.硬件支持
硬件支持: 现代GPU和TPU针对float32运算进行了优化,使用float32可以获得更好的性能。
3.兼容性
兼容性: 大多数深度学习框架默认使用float32,因此使用这种数据类型可以确保与各种工具和库的兼容性。
其他数据类型
除了float32,以下也是深度学习中常用的数据类型:
1.float16(半精度浮点数):
优点
优点:占用的内存更少,可以加快计算速度,尤其是在拥有专门硬件支持的设备上。
缺点
缺点:精度较低,可能导致数值稳定性问题。
应用
应用:在某些情况下,如模型量化或混合精度训练,float16被用于加速训练和减少内存占用。
2.int32(32位整数):
应用:通常用于表示类别标签、索引或需要较高精度的整数运算。
3.int64(64位整数):
应用:当int32的范围不足以表示数据时,如大型数据集的索引。
4.bool(布尔型):
应用:用于表示真值,例如在条件语句或掩码操作中。
选择数据类型时,需要根据模型的精度要求、硬件支持、内存限制和性能需求来权衡。在某些情况下,使用较低精度的数据类型(如float16或int8)可以在不显著牺牲模型性能的情况下减少内存使用和加快计算速度。然而,这需要仔细的数值稳定性分析和可能的模型调整。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了C、Python以及深度学习中的数据类型。
相关文章:
深度学习篇---数据存储类型
文章目录 前言第一部分:C语言中的数据存储类型1. char(通常是8位)优点缺点 2. short(通常是16位)优点缺点 3. int(通常是32位)优点缺点 4. long(通常是32位或64位)优点缺…...
可被electron等调用的Qt截图-录屏工具【源码开放】
1. 工具功能简介: (1)、QT5.15.2截图工具(exe)可单独使用或嵌入IM(嵌入方法参照:https://gitee.com/lykiao/yfscreenshot_release) (2)、支持通过Windows消息通知截图成功或取消 (3)、支持圆形、矩形、线条…...
electron 应用开发实践
参考链接: https://blog.csdn.net/2401_83384536/article/details/140549279...
openssl 生成证书 windows导入证书
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
程序员学英文之At the Airport Customs
Dialogue-1 Making Airline Reservation预定机票 My cousin works for Xiamen Airlines. 我表哥在厦航上班。I’d like to book an air ticket. 我想预定一张机票。Don’t judge a book by its cover. 不要以貌取人。I’d like to book / re-serve a table for 10. 我想预定一…...
字节iOS面试经验分享:HTTP与网络编程
字节iOS面试经验分享:HTTP与网络编程 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 字节iOS面试经验分享:HTT…...
游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局
一、盒模型 题目:简述CSS的盒模型 答:盒模型有两种类型,可以通过box-sizing设置 1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。 2.边框盒模型&a…...
Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
前言:本节内容为网络层。 主要讲解IP协议报文字段以及分离有效载荷。 另外, 本节也会带领友友认识一下IP地址的划分。 那么现在废话不多说, 开始我们的学习吧!! ps:本节正式进入网络层喽, 友友们…...
服务器虚拟化实战:架构、技术与最佳实践
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 服务器虚拟化是现代 IT 基础设施的重要组成部分,通过虚拟化技术可以提高服务器资源利用率、降低硬件成本&am…...
(leetcode 213 打家劫舍ii)
代码随想录: 将一个线性数组换成两个线性数组(去掉头,去掉尾) 分别求两个线性数组的最大值 最后求这两个数组的最大值 代码随想录视频 #include<iostream> #include<vector> #include<algorithm> //nums:2,…...
[C语言日寄] <stdio.h> 头文件功能介绍
在C语言的世界里,<stdio.h> 是一个极其重要的头文件,它提供了标准输入输出功能,是C语言程序与用户交互的核心工具。今天,我们就来深入探讨 <stdio.h> 的功能、使用注意事项以及它的拓展应用。 功能介绍 <stdio.h…...
一文读懂 Faiss:开启高维向量高效检索的大门
一、引言 在大数据与人工智能蓬勃发展的当下,高维向量数据如潮水般涌现。无论是图像、音频、文本,还是生物信息领域,都离不开高维向量来精准刻画数据特征。然而,在海量的高维向量数据中进行快速、准确的相似性搜索,却…...
【二叉搜索树】
二叉搜索树 一、认识二叉搜索树二、二叉搜索树实现2.1插入2.2查找2.3删除 总结 一、认识二叉搜索树 二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它具有以下特征: 若它的左子树不为空,则…...
R语言统计分析——ggplot2绘图5——拟合光滑曲线
参考资料:R语言实战【第2版】 ggplot2包可以通过计算统计函数并添加到图形中。例如:分级数据、计算密度、轮廓和分位数等。这里我们重点将添加平滑曲线(线性、非线性和非参数)到散点图中。 我们可以使用geom_smooth()函数来添加一…...
疯狂拆单词01
疯狂拆单词01 有些单词是可以拆的,不,是可以反复拆的,拆着拆着,你的词汇量,就能快速飙升: 【】disappointment disappointment n.失望,沮丧,扫兴 (ment-名缀࿰…...
高效学习方法分享
高效学习方法分享 引言 在信息高速发展的今天,学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫,信息的爆炸让你无从下手?今天,我们将探讨几种高效的学习方法,帮助你从中找到适合自己的学习之道。关于学…...
01.双Android容器解决方案
目录 写在前面 一,容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups(Control Groups) 1.1.3 联合文件系统(Union File System) 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署(CI/…...
一文大白话讲清楚webpack进阶——9——ModuleFederation实战
文章目录 一文大白话讲清楚webpack进阶——9——ModuleFederation实战1. 啥是ModuleFederation2. 创建容器应用3. 创建远程应用4. 启动远程应用5. 使用远程应用的组件 一文大白话讲清楚webpack进阶——9——ModuleFederation实战 1. 啥是ModuleFederation 先看这篇文章&#…...
Mysql意向锁
这里写目录标题 前置问题概念作用兼容互斥性总结 前置问题 首先我们需要问自己什么是意向锁? 为什么要有意向锁? 意向锁如何使用? 概念 mysql官网上对于意向锁的解释中有这么一句话 The main purpose of IX and IS locks is to show that …...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
