深度学习入门 基于python理论和实践读书笔记(二)

mac2026-01-12  8

第三章 神经网络 一二节

神经网络示意图

做左边一列叫做输入层,该书中也叫做第0层,从左往右一次是第1层,第二层。中间的叫做中间层或者是隐藏层,最右边一列叫做输出层。 在感知机中输出与输入对应这样子一个式子 把偏加入神经元的图中,则我们加入一个神经元,如下图 为了让输入输出看上去更加简洁,把之前的式子改为

激活函数

上面的h(x)函数,将输入信号的总和转化为输出信号。这个函数一般被称为激活函数。 将激活函数分得更加细一点,变成两个式子。

那么之前的示意图可以变成这样子

sigmoid函数

sigmoid函数的表达式 其中exp(−x)表示e-x,sigmoid函数的值域在0到1之间,是一条s型的曲线。

阶跃函数

实现阶跃函数的代码如下

import numpy as np def step_function(x): y = x>0 return y.astype(np.int)

y = x>0 这句代码,如果x是一个数组,执行后的结果就是大于0的元素对应y这个数组就是true反之则为false.如x=[-1,1,4,-2],则y=[false,true,true,false]。然后y.astype(),.astype就是其他语言里面的数据类型的转化,把y转化为括号里面的类型。如中国地方括号里面写的是int类型,那么true就会变成1,false就会转化为0。 显示阶跃函数和sigmoid函数的图形的python代码

import numpy as np import matplotlib.pylab as plt def step_function(x): return np.array(x > 0, dtype=np.int) def sigmoid(x): return 1/(1+np.exp(-x)) x=np.arange(-5.0,5.0,0.1) y=step_function(x) plt.plot(x,y) plt.ylim(-0.1,1.1)#指定y轴的范围 plt.show() x=np.arange(-5.0,5.0,0.1) y=sigmoid(x) plt.plot(x,y) plt.ylim(-0.1,1.1)#指定y轴的范围 plt.show()

    np.arang(-5.0,5.0,0.1)表示x轴的范围在-5到5,以0.1为一个单位,生成数组([-5.0, -4.9, …, 4.9])

阶跃函数和sigmoid函数图形的对比       阶跃函数和sigmoid函数的不同点是,sigmoid是一条平滑的曲线,输出随着输入发生连续性的变化,二阶跃函数也0为界限输出发生急剧的变化,并且阶跃函数的值域只能返回1或者是0,而sigmoid函数返回值是从0到1连续的值域。       阶跃函数和sigmoid函数的相同点是,他们的输出信号的值和1之间。并且都是非线性函数。       神经网络的激活函数必须是非线性的,应为如果激活函数是线性的话,那么我们加深网络的层数就没有意义了。

ReLU函数

函数的式子是这样子的 python实现

def relu(x): return np.maxinum(0,x)
最新回复(0)