深入了解purelin函數

neural network toolbox中的purelin函數是比較基礎也是比較重要的一種函數。purelin函數定義如下:

function n = purelin(n)
%PURELIN Calculates a linear transfer.
%
%  purelin(N) takes N neuron outputs and returns them unchanged.
%  
%  Here N is a matrix of net input (column) vectors.
%
%  Purelin can be used as the transfer function in any network because it
%  simply takes the input and returns it as output without any transform.
%  Processing such networks consists of linear combinations of weight
%  and bias values.
%
%  Purelin can also be used as the output function for networks that use other 
%  transfer functions.
%
%  A set of neurons with purelin output functions often serve as linear
%  classifiers if the weight and bias values have been properly set during
%  network design and training.
%
%  Examples:
%
%    Here is how to create a layer of 10 neurons with purelin neurons.
%
%      net = feedforwardnet(10);
%      net.layers{1}.transferFcn = 'purelin';
%
%    Here is how to change an existing network to use purelin output neurons.
%
%      net.outputFcn = 'purelin';
%
%  See also SIM, COMPETLAYER, HARDLIM, HARDLIMS, LOGSIG, NETSUM, POSLIN, SATLIN, SATLINS.

% Mark Beale, 2003-12-04
% Revised 12-15-03, MB: Added example.

一、purelin函數剖析

在神經網路中,可以通過不同的激活函數(activation function)來為每個神經元定義它的輸出。通常,這些激活函數是非線性的,有助於神經網路更好地處理非線性問題。但是,purelin函數是一種線性激活函數,其輸出等於輸入。它的公式非常簡單:

n = purelin(n)
n = n

這個函數只是把輸入原封不動地作為輸出,因此它可以分類器和一些線性網路中充當輸出層激活函數使用。而對於一些非線性問題,可能不適合使用此函數。

二、intlinprog函數與purelin函數

在MATLAB中,有一個名為intlinprog的函數可以進行線性整數規劃。而該函數中也可以使用purelin函數作為約束條件(即線性函數)。其用法如下:

f = [20 30];
intcon = [1 2];
A = [-5 -10; -8 -12];
b = [-50; -60];
lb = zeros(2,1);
[x,optval] = intlinprog(f,intcon,A,b,[],[],lb,[],[],optimoptions('intlinprog','Display','off'))

在上述代碼中,使用了一個純整數線性規劃模型。其中,f為目標函數,A和b是線性約束條件,intcon是整數變數的索引向量。就這個模型而言,整數線性規劃模型的解為:

x = [6;3]; 
optval = 270;

三、true函數python

在Python中,有一個名為true的函數可以進行布爾運算,該函數通常用於過濾列表或條件。在進行運算時,真值是以非零整數或非空字元串的形式表示的。當用purelin函數作為一個判斷條件時,其值為0就被當作false,非0值視為true。代碼示例:

sum = 100
price = 5
if purelin(sum - price):
    print("你可以購買此商品")
else:
    print("餘額不足,請充值")

以上代碼的意思是,如果價格小於等於餘額,那麼可以購買此商品。而「purelin(sum – price)」這段代碼的輸出值就是0或1,判斷語句以此為基礎來執行下去。

四、purelin函數的應用

purelin函數主要應用在神經網路分類器、線性網路輸出層、MATLAB整數線性規劃等領域。例如,可以根據用戶的輸入創建一個簡單的線性模型,並將其用於分類。同時,整數線性規劃模型也可以使用purelin函數作為一個線性函數使用。

function [net, tr, res] = create_simple_linear_model(x_train, y_train, x_test, y_test)
%create_simple_linear_model creates a simple linear model using purelin function as an output layer.
%
%  Syntax:
%    [net, tr, res] = create_simple_linear_model(x_train, y_train, x_test, y_test)
%
%  Description:
%    Given a training data x_train (n x p) and y_train (n x 1), this function creates a simple linear regression model for prediction. 
%    The output layer uses purelin function as an activation function. 
%    x_test and y_test are used to test the performance of the linear model.
%
%  Examples:
%
%    Here is how to use this function.
%
%      x_train = [0 0; 0 1; 1 0; 1 1];
%      y_train = [0, 1, 1, 0];
%      x_test = [0 0; 0 1; 1 0; 1 1];
%      y_test = [0, 1, 1, 0];
%      [net, tr, res] = create_simple_linear_model(x_train, y_train, x_test, y_test);
%
%  See also TRAIN, FEEDFORWARDNET.

% Create a new network
net = feedforwardnet(1);

% Use purelin function as an output function
net.layers{1}.transferFcn = 'purelin';
    
% Train the model
[net, tr] = train(net, x_train', y_train');

% Evaluate the model
res.y_predicted_train = net(x_train')';
res.r2_train = corr(y_train, res.y_predicted_train)^2;
res.y_predicted_test = net(x_test')';
res.r2_test = corr(y_test, res.y_predicted_test)^2;

這個函數創建了一個簡單的線性分類模型,其中輸出層使用purelin函數作為激活函數而不是常見的sigmoid函數等。此函數的輸入數據包括x_train,y_train,x_test和y_test,將它們作為訓練集和測試集使用。函數返回了擬合的線性模型、訓練過程中的報告(提供了互動式、迭代式的過程展示)、以及模型在訓練集和測試集上的表現結果(即預測結果的r-squared值)。

總之,purelin函數是一種非常基礎的線性激活函數,主要應用於神經網路分類器、線性網路的輸出層與MATLAB整數線性規劃。當數據不適合使用非線性激活函數時,purelin函數是一種值得基於CNN、RNN等複雜模型進一步優化的方法。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:21
下一篇 2024-12-12 13:22

相關推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29

發表回復

登錄後才能評論