float32和float64的本质区别(类型对深度学习影响以及python的使用)

首先我们需要知道何为bits和bytes?

  1. bits:名为位数
  2. bytes:为字节
  3. 简单的数就是MB和G的关系!那么8bits=1bytes,下面是各个单位的相互转化!

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQzNDMyNjM4,size_16,color_FFFFFF,t_70

 那么float32和float64有什么区别呢?

  1. 数位的区别
  2. 一个在内存中占分别32和64个bits,也就是4bytes或8bytes
  3. 数位越高浮点数的精度越高

它会影响深度学习计算效率?

float64占用的内存是float32的两倍,是float16的4倍;比如对于CIFAR10数据集,如果采用float64来表示,需要60000*32*32*3*8/1024**3=1.4G,光把数据集调入内存就需要1.4G;如果采用float32,只需要0.7G,如果采用float16,只需要0.35G左右;占用内存的多少,会对系统运行效率有严重影响;(因此数据集文件都是采用uint8来存在数据,保持文件最小)

Pandas各数据类型占用内存情况表

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA55So5ZG95pWy56CB4oCU5bCP5p2O,size_9,color_FFFFFF,t_70,g_se,x_16

Python使用numpy将数据类型设置为float32

import numpy as np
data = np.array([1,2,3,4,5,6,7,8,9],dtype='float32')

pandas分析float32和64的内存占用情况

pandas之所以处理数据速度快的原因就是他将数据加载到内存进行处理,下面使用pandas加载数据分别测试不同数据类型,相同的数据所占内存情况~

import pandas as pd
data = pd.DataFrame([1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9], dtype="float64")

data1 = pd.DataFrame([1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9], dtype="float32")

print(data.info(memory_usage=True))
print(data1.info(memory_usage=True))

 打印结果如下,我们只需要查看占用内存大小即可,float64数据占用192bytes,float32数据占用160bytes

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   0       8 non-null      float64
dtypes: float64(1)
memory usage: 192.0 bytes       ----------------->内存占用大小
None
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   0       8 non-null      float32
dtypes: float32(1)
memory usage: 160.0 bytes        ----------------->内存占用大小
None

 

 

  • 83
    点赞
  • 201
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拼命_小李

给点鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值