[英]Python numpy sigmoid function returns numbers greater than 1
[英]Sigmoid function for large numbers in Python
我正在做一個帶有Sigmoid
激活函數的神經網絡任務。 我的網絡輸入是圖像( MNIST
數據集),因為每個圖像的維度是28*28
,當我必須將它們轉換為向量時,我將有N*784
矩陣。 將這個大矩陣與權重矩陣相乘會產生大的權重正數和負數,我必須將它們傳遞給Sigmoid
函數。 我使用expit()
作為 sigmoid 函數,我的問題是:
直到 30 的數字導致expit()
接近 1。 例如expit(28)
結果0.99999999
和expit(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.