当前位置: 首页 > news >正文

深度学习篇---数据存储类型


文章目录

  • 前言
  • 第一部分: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(列表类型)

优点

可以存储任意类型的元素
提供了丰富的操作方法,如appendpop等。

缺点

访问和插入操作的时间复杂度较高(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)

代码随想录&#xff1a; 将一个线性数组换成两个线性数组&#xff08;去掉头&#xff0c;去掉尾&#xff09; 分别求两个线性数组的最大值 最后求这两个数组的最大值 代码随想录视频 #include<iostream> #include<vector> #include<algorithm> //nums:2,…...

[C语言日寄] <stdio.h> 头文件功能介绍

在C语言的世界里&#xff0c;<stdio.h> 是一个极其重要的头文件&#xff0c;它提供了标准输入输出功能&#xff0c;是C语言程序与用户交互的核心工具。今天&#xff0c;我们就来深入探讨 <stdio.h> 的功能、使用注意事项以及它的拓展应用。 功能介绍 <stdio.h…...

一文读懂 Faiss:开启高维向量高效检索的大门

一、引言 在大数据与人工智能蓬勃发展的当下&#xff0c;高维向量数据如潮水般涌现。无论是图像、音频、文本&#xff0c;还是生物信息领域&#xff0c;都离不开高维向量来精准刻画数据特征。然而&#xff0c;在海量的高维向量数据中进行快速、准确的相似性搜索&#xff0c;却…...

【二叉搜索树】

二叉搜索树 一、认识二叉搜索树二、二叉搜索树实现2.1插入2.2查找2.3删除 总结 一、认识二叉搜索树 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;是一种特殊的二叉树&#xff0c;它具有以下特征&#xff1a; 若它的左子树不为空&#xff0c;则…...

R语言统计分析——ggplot2绘图5——拟合光滑曲线

参考资料&#xff1a;R语言实战【第2版】 ggplot2包可以通过计算统计函数并添加到图形中。例如&#xff1a;分级数据、计算密度、轮廓和分位数等。这里我们重点将添加平滑曲线&#xff08;线性、非线性和非参数&#xff09;到散点图中。 我们可以使用geom_smooth()函数来添加一…...

疯狂拆单词01

疯狂拆单词01 有些单词是可以拆的&#xff0c;不&#xff0c;是可以反复拆的&#xff0c;拆着拆着&#xff0c;你的词汇量&#xff0c;就能快速飙升&#xff1a; 【】disappointment disappointment n.失望&#xff0c;沮丧&#xff0c;扫兴 &#xff08;ment-名缀&#xff0…...

高效学习方法分享

高效学习方法分享 引言 在信息高速发展的今天&#xff0c;学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫&#xff0c;信息的爆炸让你无从下手&#xff1f;今天&#xff0c;我们将探讨几种高效的学习方法&#xff0c;帮助你从中找到适合自己的学习之道。关于学…...

01.双Android容器解决方案

目录 写在前面 一&#xff0c;容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups&#xff08;Control Groups&#xff09; 1.1.3 联合文件系统&#xff08;Union File System&#xff09; 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署&#xff08;CI/…...

一文大白话讲清楚webpack进阶——9——ModuleFederation实战

文章目录 一文大白话讲清楚webpack进阶——9——ModuleFederation实战1. 啥是ModuleFederation2. 创建容器应用3. 创建远程应用4. 启动远程应用5. 使用远程应用的组件 一文大白话讲清楚webpack进阶——9——ModuleFederation实战 1. 啥是ModuleFederation 先看这篇文章&#…...

Mysql意向锁

这里写目录标题 前置问题概念作用兼容互斥性总结 前置问题 首先我们需要问自己什么是意向锁&#xff1f; 为什么要有意向锁&#xff1f; 意向锁如何使用&#xff1f; 概念 mysql官网上对于意向锁的解释中有这么一句话 The main purpose of IX and IS locks is to show that …...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...