深入了解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/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

发表回复

登录后才能评论