深度学习篇---数据存储类型
文章目录
- 前言
- 第一部分: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 …...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
