您的位置:

深入了解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等复杂模型进一步优化的方法。