实现sigmoid_使用TensorFlow实现反向传播算法(一)

本文通过TensorFlow详细介绍了Sigmoid和ReLU激活函数的导数计算,并提供了Python代码实现与可视化,帮助理解反向传播算法。
摘要由CSDN通过智能技术生成

反向传播算法

1.激活函数导数

1.1 Sigmoid函数导数

Sigmoid函数表达式:

0cf132b65462fa5bd68db904e394f7bf.png

Sigmoid函数的导数表达式:

6a764f058b8a3ed9427cdd95e59a0216.png

下面我们用代码来实现Sigmoid函数及其导数,并进行可视化

# 导入 numpy 库

import numpy as np

from matplotlib import pyplot as plt

plt.rcParams['font.size'] = 16

plt.rcParams['font.family'] = ['STKaiti']

plt.rcParams['axes.unicode_minus'] = False

def set_plt_ax():

# get current axis 获得坐标轴对象

ax = plt.gca()

ax.spines['right'].set_color('none')

# 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

# 指定下边的边作为 x 轴,指定左边的边为 y 轴

ax.yaxis.set_ticks_position('left')

# 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上

ax.spines['bottom'].set_position(('data', 0))

ax.spines['left'].set_position(('data', 0))

def sigmoid(x):

# 实现 sigmoid 函数

return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):

# sigmoid 导数的计算

# sigmoid 函数的表达式由手动推导而得

return sigmoid(x)*(1-sigmoid(x))

画图

x = np.arange(-6.0, 6.0, 0.1)

sigmoid_y = sigmoid(x)

sigmoid_derivative_y = sigmoid_derivative(x)

set_plt_ax()

plt.plot(x, sigmoid_y, color='C9', label='Sigmoid')

plt.plot(x, sigmoid_derivative_y, color='C4', label='导数')

plt.xlim(-6, 6)

plt.ylim(0, 1)

plt.legend(loc=2)

plt.show()

cce3120057f26daf9501fedafc08d875.png

1.2 ReLU 函数导数

ReLU 函数的表达式:

6f870c1976b2ca06fe10fa9f849a7ab5.png

ReLU 函数的导数表达式:

17629fe8a91fb7c015a908b1e652d457.png

下面我们用代码来实现relu函数及其导数,并进行可视化

def relu(x):

return np.maximum(0, x)

def relu_derivative(x): # ReLU 函数的导数

d = np.array(x, copy=True) # 用于保存梯度的张量

d[x < 0] = 0 # 元素为负的导数为 0

d[x >= 0] = 1 # 元素为正的导数为 1

return d

x = np.arange(-6.0, 6.0, 0.1)

relu_y = relu(x)

relu_derivative_y = relu_derivative(x)

set_plt_ax()

plt.plot(x, relu_y, color='C9', label='ReLU')

plt.plot(x, relu_derivative_y, color='C4', label='导数')

plt.xlim(-6, 6)

plt.ylim(0, 6)

plt.legend(loc=2)

plt.show()

58fa1ff03844d420212751299c899e80.png

最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值