菜菜的深度学习笔记 | 基于Python的理论与实现(二)—> 激活函数与多维数组

在这里插入图片描述

系列索引:菜菜的深度学习笔记 | 基于Python的理论与实现

一、激活函数

阶跃函数:以阈值为界,一旦超过阈值就切换输出

感知机使用阶跃函数作为激活函数,如果将阶跃函数换成其他函数,那么就进入神经网络的世界了。

神经网络中用sigmoid函数作为激活函数,进行信号的转换,转换后的信号被传送到下一个神经元。

感知机和神经网络的区别就在于激活函数。

(1)阶跃函数的实现

import numpy as np
import matplotlib.pyplot as plt


def step_function(x):  # 阶跃函数
    y = x > 0
    return y.astype(np.int)


x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()

在-5到5的范围内,以0.1为单位生成Numpy数组,限制y的取值在-0.1 - 1.1。它的图像呈阶梯式变化,所以称为阶跃函数。

在这里插入图片描述

(2)sigmoid函数的实现

def sigmoid(x):  # sigmoid函数之所以支持Numpy数组是因为其广播功能
    return 1/(1+np.exp(-x))

在这里插入图片描述

(3)阶跃函数和sigmoid函数对比

sigmoid函数是一条平滑的曲线,输出随着输入发生连续的变化。其平滑性对于神经网络的学习具有重要意义。

相对于阶跃函数只能返回0或1,sigmoid函数能返回小数,即感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。

(4)非线性函数

激活函数不能使用线性函数,使用线性函数的话加深神经网络的层数就没什么意义了。

线性函数的问题在于不管如何加深层数总存在与之等效的“无隐藏层的神经网络”
如:激活函数h(x) = cx,y=h(h(h(x))),即y=c^3x,等效于y = ax。

(5)ReLU函数

ReLU函数:当输入大于0时直接输出该值,输入小于等于0时输出0。

def relu(x):
	return np.maximum(0,x)

二、多维数组的运算

(1)矩阵的乘积

np.dot(a,b):计算AB矩阵的乘积(点积)
A x B = C
3x2 - 2x4 - 3x4,A的列与B的行保持一致

(2)神经网络的内积

import numpy as np

X = np.array([1, 2])
W = np.array([[1, 3, 5], [2, 4, 6]])
Y = np.dot(X, W)
print(Y)

基于Python的理论与实现 系列持续更新,欢迎点赞收藏关注

上一篇:菜菜的深度学习笔记 | 基于Python的理论与实现(一)
下一篇:菜菜的深度学习笔记 | 基于Python的理论与实现(三)

本人水平有限,文章中不足之处欢迎下方👇评论区批评指正~

如果感觉对你有帮助,点个赞👍 支持一下吧 ~

不定期分享 有趣、有料、有营养内容,欢迎 订阅关注 🤝 我的博客 ,期待在这与你相遇 ~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猿知

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

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

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

打赏作者

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

抵扣说明:

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

余额充值