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

news/2025/2/1 17:23:07/

文章目录

  • 前言
  • 第一部分: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(布尔型):
  • 总结


前言

以上就是今天要讲的内容,本文仅仅介绍了CPython以及学习>深度学习中的数据类型


C_16">第一部分: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_72">第二部分: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)可以在不显著牺牲模型性能的情况下减少内存使用和加快计算速度。然而,这需要仔细的数值稳定性分析和可能的模型调整。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了CPython以及学习>深度学习中的数据类型


http://www.ppmy.cn/news/1568472.html

相关文章

工业相机常用词语解释

线阵相机和面阵相机: 线阵相机,是采用线阵图像传感器的相机。线阵图像传感器以CCD为主, 一行的数据可以到几K甚至几十K,但是高度只有几个像素,行频很高,可以到每秒几万行,适合做非常高精度、宽…

PHP Error处理与优化指南

PHP Error处理与优化指南 引言 在PHP编程中,错误处理是保证程序稳定性和用户体验的关键环节。良好的错误处理机制不仅能帮助开发者快速定位问题,还能提升应用程序的健壮性。本文将详细介绍PHP错误处理的方法、技巧以及优化策略。 一、PHP错误处理概述 1.1 错误类型 PHP中…

互斥锁/信号量实现5个线程同步

互斥锁 实现同步 互斥锁保证在同一时刻,只有一个线程可以访问共享资源,从而实现了线程同步。 思路 1 创建互斥锁(1个) pthread_mutex_t mutex; 2 初始化互斥锁 所有线程开始执行前,pthread_mutex_init(&mutex, …

【ARM】解决MDK在打开工程的时候提示CMSIS的版本不对问题

1、 文档目标 解决MDK在打开使用Compiler 6的工程的时候,提示CMSIS 的API版本过低的报错。 2、 问题场景 客户在Pack包中打开一个示例工程,打算熟悉一下对应芯片的功能和软件的功能,但是,打开软件后,在构建信息输出框…

Skynet实践之「Lua C 模块集成—优先级队列」

本文展示了 如何以 C 实现一个通用的“最小堆(Min-Heap)优先队列 并在 Skynet 中通过 Lua C 模块集成使用,从而获得更高的性能与通用性。 一、C 语言模块:cpriorityqueue.c 以下代码演示了一个最小堆的数据结构(以 ru…

用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)

用HTML、CSS和JavaScript庆祝2025蛇年大吉 在这个数字化时代,网页设计不仅仅是为了展示信息,更是传达情感和文化的一种方式。2025年将是蛇年,许多人希望通过各种方式庆祝这一重要的时刻。在这篇文章中,我们将一起学习如何使用HTM…

fpga系列 HDL:verilog 常见错误与注意事项 quartus13 bug 初始失效 reg *** = 1;

代码 顶层模块 module bug(input wire clk,output wire BitOut );reg BitIn 1;Encoder encoder (.clk(clk),.BitIn(BitIn),.BitOut(BitOut) ); endmodule内部逻辑模块 module Encoder(input wire clk,input wire BitIn,output reg BitOut );always (posedge clk) beginif…

Elasticsearch——Elasticsearch性能优化实战

摘要 本文主要介绍了 Elasticsearch 性能优化的实战方法,从硬件配置优化、索引优化设置、查询方面优化、数据结构优化以及集群架构设计等五个方面进行了详细阐述,旨在帮助读者提升 Elasticsearch 的性能表现。 1. 硬件配置优化 升级硬件设备配置一直都…