程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

float32和float64的本質區別(類型對深度學習影響以及python的使用)

編輯:Python

首先我們需要知道何為bits和bytes?

  1. bits:名為位數
  2. bytes:為字節
  3. 簡單的數就是MB和G的關系!那麼8bits=1bytes,下面是各個單位的相互轉化!

 那麼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各數據類型占用內存情況表

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


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved