李沐深度学习-激活函数

发布时间:2024年01月19日
import torch
import numpy as np
import matplotlib.pyplot as plt
import sys

sys.path.append("路径")
import d2lzh_pytorch as d2l

'''
1. relu
2. sigmoid
3. tanh
'''

'''
----------------------------------------------------------------------ReLU函数:只选正数,负数归零
'''


def xyplot(x_vals, y_vals, name):
    d2l.set_figsize(figsize=(5, 2.5))
    d2l.plt.plot(x_vals.detach().numpy(), y_vals.detach().numpy(), label=name)  # 使用detach()是为了使其脱离梯度计算
    d2l.plt.xlabel('x')
    d2l.plt.ylabel(name + '(x)')
    d2l.plt.legend()
    d2l.plt.savefig('路径')


x = torch.arange(-8.0, 8.0, 1, requires_grad=True)
y = x.relu()
xyplot(x, y, 'relu')
# relu函数导数
y.sum().backward()  # backward只对标两输出才会计算梯度    ?????type(y)为什么还会是Tensor????
xyplot(x, x.grad, 'grad of relu')

'''
------------------------------------------------------------------sigmoid 激活函数:可以将元素的值变换到0-1之间
'''
y = x.sigmoid()
xyplot(x, y, 'sigmoid')

# 绘制sigmoid函数的导数
x.grad.zero_()  # 变量梯度清零操作
y.sum().backward()
xyplot(x, x.grad, 'grad of sigmoid')
'''
-----------------------------------------------tanh函数:将元素变换到-1到1之间
'''
y = x.tanh()
xyplot(x, y, 'tanh')
# tanh函数的导数
x.grad.zero_()
y.sum().backward()
xyplot(x, x.grad, 'grad of tanh')

文章来源:https://blog.csdn.net/qq_43401942/article/details/135701548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。