深度学习篇---数据存储类型
文章目录
- 前言
- 第一部分: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 …...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...