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