莫凡Pytorch学习笔记(一)

2023-12-11 20:10
文章标签 学习 笔记 pytorch 莫凡

本文主要是介绍莫凡Pytorch学习笔记(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近在学习莫凡的Pytorch教程,为了避免忘记,现对一些学习中的知识点进行记录。对本系列博客,有以下几点需要注意:

  • 基础的Tensor操作我已经有过记录,因而在学习时我直接从激活函数这一节开始学起。
  • 莫凡Pytorch的代码大多基于Pytorch的0.4版本,而我现在学习时使用的是1.7.1版本,部分代码我进行了调整。

好了,废话不多说,开始今天的学习笔记记录。

Pytorch中几种基本的激活函数

本篇笔记主要对应于莫凡Pytorch中的2.3和2.4节内容。

对于激活函数,维基百科给出的定义是这样的:

“在计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。”

在神经网络中,激活函数是一个非线性函数。因为倘若是线性函数,那么由线性函数的齐次性和可加性就可以将这些线性函数全部等效为一个线性函数,从而失去深度网络模型强大的表示能力。

在Pytorch中常用的几个激活函数有:

ReLU

f ( x ) = { 0 , x < 0 x , x ≥ 0 f(x) = \begin{cases} 0, & x< 0 \\ x, & x \ge 0 \end{cases} f(x)={0,x,x<0x0

Tanh

f ( x ) = t a n h ( x ) = e x − e − x e x + e − x f(x) = tanh(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} f(x)=tanh(x)=ex+exexex

Sigmoid

f ( x ) = σ ( x ) = 1 1 + e − x f(x)= \sigma(x) = \frac{1}{1+e^{-x}} f(x)=σ(x)=1+ex1

Softplus

f ( x ) = ln ⁡ ( 1 + e x ) f(x) = \ln(1+e^x) f(x)=ln(1+ex)

激活函数图像

对其可视化如下:

import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt
# fake data
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x_np = x.numpy()
y_relu = F.relu(x).numpy()
y_sigmoid = F.sigmoid(x).numpy()
y_tanh = F.tanh(x).numpy()
y_softplus = F.softplus(x).numpy()
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim(0, 5)
plt.legend(loc='best')plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='g', label='sigmoid')
plt.ylim(0, 1)
plt.legend(loc='best')plt.subplot(223)
plt.plot(x_np, y_tanh, c='b', label='tanh')
plt.ylim(-1, 1)
plt.legend(loc='best')plt.subplot(224)
plt.plot(x_np, y_softplus, c='k', label='softplus')
plt.ylim(0, 5)
plt.legend(loc='best')

在这里插入图片描述

参考

  1. 莫凡Python:Pytorch动态神经网络,https://mofanpy.com/tutorials/machine-learning/torch/

这篇关于莫凡Pytorch学习笔记(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481962

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你