ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

菜菜的深度学习笔记 | 基于Python的理论与实现(二)

2022-02-22 22:58:53  阅读:250  来源: 互联网

标签:阶跃 函数 sigmoid Python 菜菜 笔记 神经网络 np 激活


在这里插入图片描述

系列索引:菜菜的深度学习笔记 | 基于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的理论与实现(一)
下一篇:

本人水平有限,文章中不足之处欢迎下方

标签:阶跃,函数,sigmoid,Python,菜菜,笔记,神经网络,np,激活
来源: https://blog.csdn.net/Magic_Zsir/article/details/123079337

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有