參考文章:
在數學中,與浮點數對應的是小數
數學上區間[0,1]之間的小數有無窮多個
計算機中,32位浮點數最多可以表示2^32個數
所以,計算機是不可能描述得盡的,必然會有一些近似,一些精度所示
當前,計算機中浮點數採用的是ieee 754標準。浮點數分為單精度浮點數(32位)和雙精度浮點數(64位)。浮點數的基本格式如下:
各部分含義如下:
上述格式描述的浮點數的十進位制值為value = (-1)^s * (1.fraction) * 2^(exponent - 偏差)
2^(exponent - 偏差)
表示冪次,類似於二進位制的科學計數法
上面描述的是規格化的浮點數,如果浮點數的階碼部分全0或者全1,則表示非規格化的浮點數
。
通過上面的介紹可以發現,浮點數的精度取決於二進位制小數部分的精度。對於單精度浮點數,小數部分有23位,對應十進位制小數見下表
二進位制小數
十進位制小數
2^-23
0.00000011920928955078125
2^-22
0.0000002384185791015625
2^-21
0.000000476837158203125
2^-20
0.00000095367431640625
2^-19
0.0000019073486328125
2^-18
0.000003814697265625
思路:結論
通過上面的分析可以發現,儘管浮點數表示的範圍很廣,但由於精度損失的存在,加上冪次的放大作用,乙個浮點數實際上是表示了周圍的乙個有理數區間。如果將浮點數繪製到乙個數軸上,直觀上看,靠近0的部分,浮點數出現較密集。越靠近無窮大,浮點數分布越稀疏,乙個浮點值代表了周圍一片資料。如下圖所示。從這個意義上來說,浮點數不宜直接比較相等,它們是代表了乙個資料範圍。實際應用中,如果要使用浮點數計算,一定要考慮精度問題。在滿足精度要求的前提下,計算結果才是有效的。
在計算精度要求情形下,例如商業計算等,應該避免使用浮點數,嚴格採取高精度計算。
三 PyTorch 深度學習 反向傳播
import torch x data 1.0 2.0 3.0 y data 2.0 4.0 6.0 w torch.tensor 1.0 w的初值為1.0 w.requires grad true 需要計算梯度 defforward x return x w w是乙個tensor defloss ...
深度學習之反向傳播演算法
反向傳播演算法是用來求那個複雜到爆的梯度的。上一集中提到一點,13000維的梯度向量是難以想象的。換個思路,梯度向量每一項的大小,是在說代價函式對每個引數有多敏感。如上圖,我們可以這樣裡理解,第乙個權重對代價函式的影響是是第二個的32倍。我們來考慮乙個還沒有被訓練好的網路。我們並不能直接改動這些啟用...
PyTorch深度學習實踐 反向傳播
pytorch深度學習實踐 完結合集 嗶哩嗶哩 bilibili 目錄在之前課程中介紹的線性模型就是乙個最簡單的神經網路的結構,其內部引數的更新過程如下 對於簡單的模型來說可以直接使用表示式的方式來更新權重,但是如果網路結構比較複雜 如下圖 直接使用解析式的方式來更新顯然有些複雜且不太可能實現。反向...