Matlab画激活函数sigmoid, tanh,Relu等

        x = linspace(-10.0,10.0);
relu = max(x,0);
sigmoid = 1./(1.0+exp(-1.0*x));
tanh = 2./(1.0 + exp(-2.0 * x)) - 1;


plot(x,relu,'r');
hold on;
plot(x,sigmoid,'b');
hold on;
plot(x,tanh,'g');

legend('relu','sigmoid','tanh');
title('激活函数(Activation)','FontSize',16);

hold on;
y = linspace(-2.0,5.0);
x = 0.*y;
plot(x,y,'k')
axis([-2.0 5.0 -2.0 5.0])
set(gca, 'XGrid','on');  % X轴的网格
set(gca, 'YGrid','on');  % Y轴的网格
      

 

v2-bdbac6c4a165fb9374af480fb8155d81_b.jpg

ReLu 与 TLU

        x = linspace(-10.0,10.0);
relu = max(x,0);
tlu = max(x-1,0)+1

plot(x,relu,'r');
hold on;
plot(x,tlu,'b');
hold on;

legend('relu','tlu');
title('激活函数(Activation)','FontSize',16);
hold on;

y = linspace(-2.0,5.0);
x = 0.*y;
plot(x,y,'k')
axis([-2.0 5.0 -2.0 5.0])
set(gca, 'XGrid','on');  % X轴的网格
set(gca, 'YGrid','on');  % Y轴的网格
      

 

v2-87ff795599c363eec7d404a6ce96762d_b.jpg

 

<think>好的,我现在需要回答用户关于如何使用Matlab绘制常见神经网络激活函数图像的问题。用户提到了sigmoidReLU,但可能还需要其他激活函数,比如Tanh、Leaky ReLU等。首先,我应该参考用户提供的站内引用,特别是引用[1]中的示例代码,看看他们是如何绘制sigmoidReLU的。 引用[1]中的代码使用了linspace生成x值,计算sigmoid函数,然后用plot绘制,并且分两个图显示。用户可能希望类似的代码结构,但可能需要扩展到其他激活函数。另外,引用[2]提到了更多激活函数,所以可能需要包含这些函数的实现。 接下来,我需要确保代码正确,符合Matlab语法,并且展示如何在一个图中绘制多个函数,或者分多个子图显示。用户可能需要清晰的图例和标注,所以每个函数应该用不同颜色或线型区分。 然后,考虑到用户的问题可能需要示例代码,我应该将每个激活函数的公式用LaTeX表示,符合系统级指令中的数学表达式要求。例如,sigmoid函数用$f(x) = \frac{1}{1 + e^{-x}}$,ReLU是$f(x) = \max(x, 0)$等。 另外,系统级指令要求生成相关问题,我需要考虑用户可能的后续问题,比如如何调整坐标轴、如何保存图像、不同激活函数的优缺点,或者在神经网络中的应用场景等。 现在,我需要整理代码,确保每个激活函数都有对应的公式和实现。例如,Tanh函数可以用tanh(x),Leaky ReLU需要处理x小于0的情况,乘以一个小的斜率如0.01x。ELU在x<0时使用α*(exp(x)-1)等。这些都需要正确的Matlab表达式。 然后,将代码分成多个部分,可能使用subplot来在一个窗口中显示多个激活函数,这样用户更容易比较。同时,添加图例、标题和坐标轴标签,使图像更清晰。 检查是否有语法错误,比如点运算(如exp(-x)可能需要点乘,但在这里x是向量,所以应该用数组运算,即点除)。在Matlab中,1./(1 + exp(-x))是正确的。 最后,生成相关问题,考虑用户可能想进一步了解的内容,比如激活函数的导数、不同激活函数的比较、在深度学习中的应用,或者如何自定义其他激活函数等。 总结步骤: 1. 准备x值,生成范围-10到10的向量。 2. 计算每个激活函数的y值。 3. 使用subplot创建多个子图,每个子图绘制一个函数。 4. 添加必要的标注和图例。 5. 提供扩展建议,如调整参数或添加其他激活函数。 6. 生成相关问题,引导用户深入学习。</think>### 使用Matlab绘制常见神经网络激活函数图像 以下是绘制sigmoidReLUTanh、Leaky ReLU、ELU激活函数图像的详细步骤和代码示例: #### 1. 定义输入范围和基础参数 ```matlab clc; clear all; x = linspace(-5, 5, 1000); % 定义输入范围[-5,5],增加采样点使曲线更平滑 alpha_leaky = 0.1; % Leaky ReLU的负区间斜率 alpha_elu = 1.0; % ELU的α参数 ``` #### 2. 计算各激活函数值 ```matlab % Sigmoid函数: $f(x) = \frac{1}{1 + e^{-x}}$ sigmoid = 1 ./ (1 + exp(-x)); % ReLU函数: $f(x) = \max(x, 0)$ relu = max(x, 0); % Tanh函数: $f(x) = \tanh(x)$ tanh_func = tanh(x); % Leaky ReLU函数: $f(x) = \begin{cases} x & x \geq 0 \\ \alpha x & x < 0 \end{cases}$ leaky_relu = x .* (x >= 0) + alpha_leaky * x .* (x < 0); % ELU函数: $f(x) = \begin{cases} x & x \geq 0 \\ \alpha(e^x - 1) & x < 0 \end{cases}$ elu = x .* (x >= 0) + alpha_elu * (exp(x) - 1) .* (x < 0); ``` #### 3. 绘制图像(分多个子图) ```matlab figure('Position', [100 100 1200 800]) % 设置图像窗口尺寸 % Sigmoid subplot(2,3,1) plot(x, sigmoid, 'b', 'LineWidth', 2) title('Sigmoid激活函数') xlabel('x'), ylabel('f(x)') grid on % ReLU subplot(2,3,2) plot(x, relu, 'r', 'LineWidth', 2) title('ReLU激活函数') xlabel('x'), ylabel('f(x)') grid on % Tanh subplot(2,3,3) plot(x, tanh_func, 'g', 'LineWidth', 2) title('Tanh激活函数') xlabel('x'), ylabel('f(x)') grid on % Leaky ReLU subplot(2,3,4) plot(x, leaky_relu, 'm', 'LineWidth', 2) title('Leaky ReLU激活函数 (\alpha=0.1)') xlabel('x'), ylabel('f(x)') grid on % ELU subplot(2,3,5) plot(x, elu, 'k', 'LineWidth', 2) title('ELU激活函数 (\alpha=1.0)') xlabel('x'), ylabel('f(x)') grid on ``` #### 4. 效果扩展建议 - 调整参数观察变化(如修改Leaky ReLU的$\alpha$值) - 添加更多激活函数(如Swish、GELU等) - 绘制导函数图像(如sigmoid的导数$f'(x) = f(x)(1-f(x))$) $$f_{\text{GELU}}(x) = x \Phi(x) = x \cdot \frac{1}{2}\left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right]$$ [^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖零猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值