簡體   English   中英

Python中大數的Sigmoid函數

[英]Sigmoid function for large numbers in Python

我正在做一個帶有Sigmoid激活函數的神經網絡任務。 我的網絡輸入是圖像( MNIST數據集),因為每個圖像的維度是28*28 ,當我必須將它們轉換為向量時,我將有N*784矩陣。 將這個大矩陣與權重矩陣相乘會產生大的權重正數和負數,我必須將它們傳遞給Sigmoid函數。 我使用expit()作為 sigmoid 函數,我的問題是:

直到 30 的數字導致expit()接近 1。 例如expit(28)結果0.99999999expit(29)結果1.0和 upper 29也得到1 但是我的新人是30以上,因此他們中的一些人在第一個學習周期中得到1和一些 0,實際上根本沒有任何學習。

我必須做什么? Sigmoid's上限是29 我不能改變它嗎? 我必須改變我的圖像尺寸來克服這個問題?

正如評論部分所討論的,真正的問題原來是使用sigmoid本身,它不適合這種情況。 在任何有限精度計算中,都會遇到上述問題,一個系統有 29 個,另一個系統有 38 個。

解決該問題的一種方法是使用softmax激活函數,它不太容易受到此類問題的影響。 請注意,使用成本函數您可能會遇到類似的挑戰。

有點題外話,但您可能想檢查問題是如何解決的,例如tensorflow 它為初學者提供了一些不錯的教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM