吴恩达机器学习-可选实验室:Relu

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
plt.style.use('./deeplearning.mplstyle')
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LeakyReLU
from tensorflow.keras.activations import linear, relu, sigmoid
%matplotlib widget
from matplotlib.widgets import Slider
from lab_utils_common import dlc
from autils import plt_act_trio
from lab_utils_relu import *
import warnings
warnings.simplefilter(action='ignore', category=UserWarning)

2-Relu激活

本周,引入了一种新的激活方式,即整流线性单元(ReLU)。
𝑎=𝑚𝑎𝑥(0,𝑧) # ReLU函数

plt_act_trio()

在这里插入图片描述
在这里插入图片描述

👆讲座中的例子展示了ReLU的应用。在本例中,派生的“感知”特征不是二进制的,而是具有连续的值范围。sigmoid最适合开/关或二进制情况。ReLU提供了连续的线性关系。此外,它还有一个输出为零的“关闭”范围。“关闭”功能使ReLU成为非线性激活。为什么需要这样做?让我们在下面检查一下。
为什么是非线性激活?
在这里插入图片描述
所示的函数由线性片段(分段线性)组成。斜率在线性部分期间是一致的,然后在过渡点处突然变化。在过渡点,添加一个新的线性函数,当添加到现有函数时,将产生新的斜率。新函数是在过渡点添加的,但对该点之前的输出没有贡献。非线性激活函数负责在转换点之前和之后禁用输入。下面的练习提供了一个更具体的例子。

该练习将在回归问题中使用以下网络,其中您必须对分段线性目标进行建模:在这里插入图片描述
网络在第一层有3个单元。每个人将对目标的一部分负责。单元0被预先编程并固定为映射第一个段。您将修改第一单元和第2单元中的权重和偏差,以对第2段和第3段进行建模。输出单元也是固定的,并且简单地对第一层的输出求和。
使用下面的滑块,修改权重和偏移以匹配目标。提示:从w1和b1开始,让w2和b2为零,直到匹配第二个线段。点击比滑动更快。如果你有麻烦,别担心,下面的文字会更详细地描述这一点。

_ = plt_relu_ex()

未匹配前:
在这里插入图片描述
匹配第二个线段
在这里插入图片描述
匹配第三条直线:
在这里插入图片描述
本练习的目的是了解ReLU的非线性行为如何提供所需的能力,以关闭功能,直到需要为止。让我们看看这在这个例子中是如何工作的。
在这里插入图片描述
右边的图包含第一层中单位的输出。
从顶部开始,Unit 0负责标记为1的第一个段。两个线性函数𝑧以及ReLU之后的函数𝑎
如图所示。您可以看到ReLU在区间[0,1]之后截断了函数。这是关键,因为它可以防止干扰以下片段。
Unit 1负责第二段。在这里,ReLU使该单元保持安静,直到x为1之后。由于Unit 1 𝑤[1]1没有贡献,只是目标线的斜率。必须调整偏置以保持输出为负,直到x达到1。
Unit 2负责第三段。ReLU再次将输出归零,直到x达到正确的值。单元的坡度,𝑤[1]2
,必须设置为使得Unit 1和2的总和具有期望的斜率。再次调整偏置以保持输出为负,直到x达到2。
ReLU激活的“关闭”或禁用功能使模型能够将线性段缝合在一起,以对复杂的非线性函数进行建模。
====新材料结束=

新激活

本周推出了一种新的激活方式,即整流线性单元(ReLU)。

def plt_act_trio():
    X = np.linspace(-5,5,100)
    fig,ax = plt.subplots(1,3, figsize=(6,2))
    widgvis(fig)
    ax[0].plot(X,tf.keras.activations.linear(X))
    ax[0].axvline(0, lw=0.3, c="black")
    ax[0].axhline(0, lw=0.3, c="black")
    ax[0].set_title("linear")
    ax[1].plot(X,tf.keras.activations.sigmoid(X))
    ax[1].axvline(0, lw=0.3, c="black")
    ax[1].axhline(0, lw=0.3, c="black")
    ax[1].set_title("sigmoid")
    ax[2].plot(X,tf.keras.activations.relu(X))
    ax[2].axhline(0, lw=0.3, c="black")
    ax[2].axvline(0, lw=0.3, c="black")
    ax[2].set_title("relu")
    fig.suptitle("Common Activation Functions", fontsize=14)
    fig.tight_layout(pad=0.2)
    plt.show()
plt_act_trio()

在这里插入图片描述
右边的例子展示了ReLu的一个应用程序。在本例中,“感知”功能不是二进制的,但其范围从0到更大的值不等。sigmoid最适合开/关或二进制情况。ReLu提供了一个线性关系和一个输出为零的“关”范围。“关闭”功能使ReLu成为非线性激活。为什么需要这样做?让我们用下面的例子来检查一下。

X = np.linspace(0,2*np.pi, 100)
y = np.cos(X)+1
y[50:100]=0
fig,ax = plt.subplots(1,1, figsize=(2,2))
widgvis(fig)
ax.plot(X,y)
plt.show()

在这里插入图片描述

w10 = np.array([[-1]])
b10 = np.array([2.6])
d10 = Dense(1, activation = "linear", input_shape = (1,), weights=[w10,b10])
z10 = d10(X.reshape(-1,1))
a10 = relu(z10)
def plt_act1(y,z,a):
    fig,ax = plt.subplots(1,3, figsize=(6,2.5)) #创建一个包含一行三列子图的图形对象 fig,并返回包含这些子图坐标轴的数组 ax。
    widgvis(fig)
    ax[0].plot(X,y,label="target")#在第一个子图中绘制了目标输出 y 的折线图,并设置了标签为 "target"。
    ax[0].axvline(0, lw=0.3, c="black")#在第一个子图中添加了一条垂直于 x 轴的黑色虚线,位置在 x=0 处。
    ax[0].axhline(0, lw=0.3, c="black")#在第一个子图中添加了一条水平于 y 轴的黑色虚线,位置在 y=0 处。
    ax[0].set_title("y - target")#设置第一个子图的标题为 "y - target"。
    ax[1].plot(X,y, label="target")
    ax[1].plot(X,z, c=dlc["dldarkred"],label="z")#颜色为预定义的深红色
    ax[1].axvline(0, lw=0.3, c="black")
    ax[1].axhline(0, lw=0.3, c="black")
    ax[1].set_title("z = wX+b")
    ax[1].legend(loc="upper center")
    ax[2].plot(X,y, label="target")
    ax[2].plot(X,a, c=dlc["dldarkred"],label="ReLu(z)")
    ax[2].axhline(0, lw=0.3, c="black")
    ax[2].axvline(0, lw=0.3, c
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习人工智能的核心,是使计算机具有智能的根本途径。 随着统计学的发展,统计学习在机器学习中占据了重要地位,支持向量机(SVM)、决策树和随机森林等算法的提出和发展,使得机器学习能够更好地处理分类、回归和聚类等任务。进入21世纪,深度学习成为机器学习领域的重要突破,采用多层神经网络模型,通过大量数据和强大的计算能力来训练模型,在计算机视觉、自然语言处理和语音识别等领域取得了显著的成果。 机器学习算法在各个领域都有广泛的应用,包括医疗保健、金融、零售和电子商务、智能交通、生产制造等。例如,在医疗领域,机器学习技术可以帮助医生识别医疗影像,辅助诊断疾病,预测病情发展趋势,并为患者提供个性化的治疗方案。在金融领域,机器学习模型可以分析金融数据,识别潜在风险,预测股票市场的走势等。 未来,随着传感器技术和计算能力的提升,机器学习将在自动驾驶、智能家居等领域发挥更大的作用。同时,随着物联网技术的普及,机器学习将助力智能家居设备实现更加智能化和个性化的功能。在工业制造领域,机器学习也将实现广泛应用,如智能制造、工艺优化和质量控制等。 总之,机器学习是一门具有广阔应用前景和深远影响的学科,它将持续推动人工智能技术的发展,为人类社会的进步做出重要贡献。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值