如何在神經網路中使用Sigmoid函數進行激活?

一、什麼是Sigmoid函數

Sigmoid函數,也稱為邏輯斯蒂函數,是一種常見的激活函數,常用於解決二分類問題。Sigmoid函數的形式如下:

f(z) = 1/(1+exp(-z))

其中exp函數為指數函數,z為輸入。Sigmoid函數在輸入接近於0時,輸出接近於0.5;輸入越大,輸出越趨近於1;輸入越小,輸出越趨近於0。

二、在神經網路中使用Sigmoid函數進行激活

在神經網路中,我們可以使用Sigmoid函數作為每個神經元的激活函數。一個神經元可以表示為以下公式:

y = f(w1x1 + w2x2 + ... + wnxn + b)

其中,w1, w2, …, wn為權重,x1, x2, …, xn為輸入,b為偏置量,f為激活函數。我們可以把Sigmoid函數作為激活函數,將等式改寫為:

y = 1/(1+exp(-(w1x1 + w2x2 + ... + wnxn + b)))

這樣,每個神經元的輸出都可以被Sigmoid函數所激活,而整個神經網路也可以通過調整不同神經元的權重和偏置量來優化模型。

三、代碼示例

下面是一個使用Sigmoid函數作為激活函數的神經網路模型的Python示例代碼:

import numpy as np

class NeuralNetwork:
    def __init__(self, num_inputs, num_hidden, num_outputs):
        # 初始化神經網路模型,包括輸入層、隱藏層和輸出層的權重和偏置量
        self.hidden_weights = np.random.randn(num_inputs, num_hidden)
        self.hidden_bias = np.zeros((1, num_hidden))
        self.output_weights = np.random.randn(num_hidden, num_outputs)
        self.output_bias = np.zeros((1, num_outputs))

    def sigmoid(self, z):
        # Sigmoid函數定義
        return 1/(1+np.exp(-z))

    def forward(self, inputs):
        # 前向傳播函數,將輸入數據推送到輸出層
        hidden_layer = np.dot(inputs, self.hidden_weights)
        hidden_layer = hidden_layer + self.hidden_bias
        hidden_layer_activation = self.sigmoid(hidden_layer)
        output_layer = np.dot(hidden_layer_activation, self.output_weights)
        output_layer = output_layer + self.output_bias
        output_layer_activation = self.sigmoid(output_layer)
        return output_layer_activation

    def train(self, inputs, targets, num_epochs, learning_rate):
        # 訓練神經網路模型
        for epoch in range(num_epochs):
            # 前向傳播
            hidden_layer = np.dot(inputs, self.hidden_weights)
            hidden_layer = hidden_layer + self.hidden_bias
            hidden_layer_activation = self.sigmoid(hidden_layer)
            output_layer = np.dot(hidden_layer_activation, self.output_weights)
            output_layer = output_layer + self.output_bias
            output_layer_activation = self.sigmoid(output_layer)

            # 反向傳播
            error = targets - output_layer_activation
            d_output_layer_activation = error * output_layer_activation * (1 - output_layer_activation)
            error_hidden = np.dot(d_output_layer_activation, self.output_weights.T)
            d_hidden_layer_activation = error_hidden * hidden_layer_activation * (1 - hidden_layer_activation)

            # 更新權重和偏置量
            self.output_weights = self.output_weights + learning_rate * np.dot(hidden_layer_activation.T, d_output_layer_activation)
            self.output_bias = self.output_bias + learning_rate * np.sum(d_output_layer_activation, axis=0, keepdims=True)
            self.hidden_weights = self.hidden_weights + learning_rate * np.dot(inputs.T, d_hidden_layer_activation)
            self.hidden_bias = self.hidden_bias + learning_rate * np.sum(d_hidden_layer_activation, axis=0)

    def predict(self, inputs):
        # 使用訓練好的神經網路模型預測新的數據
        return self.forward(inputs)

四、總結

本文介紹了Sigmoid函數在神經網路中的應用,包括Sigmoid函數的形式和神經元的實現方式。同時,本文提供了一個使用Sigmoid函數作為激活函數的神經網路模型的Python示例代碼,讀者可以根據需要進行參考和修改。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155402.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:39
下一篇 2024-11-17 02:39

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 如何在Python中實現平方運算?

    在Python中,平方運算是常見的數學運算之一。本文將從多個方面詳細闡述如何在Python中實現平方運算。 一、使用乘法運算實現平方 平方運算就是一個數乘以自己,因此可以使用乘法運…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 如何在Python中找出所有的三位水仙花數

    本文將介紹如何使用Python語言編寫程序,找出所有的三位水仙花數。 一、什麼是水仙花數 水仙花數也稱為自戀數,是指一個n位數(n≥3),其各位數字的n次方和等於該數本身。例如,1…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論