[深度学习实战]基于PyTorch的深度学习实战(上)[变量、求导、损失函数、优化器](一)

简介: 笔记

一、前言


 用了Matlab搭建神经网络才愈发感觉"人生苦短,我用PyTorch“是多么正确。毕竟新的神经网络架构还是得自己一点点敲,现在是一点都笑不出来了,指望Matlab提供的老框架和训练算法也做不出什么算法方法的突破,顶多就是在实现功能上方便点罢了。

 本博文要求读者有一定的Python编程基础!,对机器学习和神经网络有一定的了解!。如果是零基础学习人群,请参看我之前的Python基础语法博文和人工智能相关博文。读完它们不会花费你太多的时间,并且如果你能做到简单地阅览完这些博文,就完全有足够的知识储备来彻底搞懂这篇博文的全部内容了。


二、深度学习框架——PyTorch


2.1 PyTorch介绍

 PyTorch是 Facebook 发布的一款深度学习框架,和Tensorflow,Keras,Theano等其他深度学习框架都不同。作为动态计算图模式,其应用模型支持在运行过程中根据运行参数动态改变,而其他几种框架都是静态计算图模式,其模型在运行之前就已经确定。

 Python模块可以通过pip安装,临时使用时可以使用下述命令:

pip install pythonModuleName -i
https://pypi.douban.com/simple


 也可以永久更改:/root/.pip/pip.conf:

[global]
index-url = https://pypi.douban.com/simple


2.2 Python安装详解

 安装Python就略去不写了,都是可视化界面也没什么可说的。安装后查看当前版本

1.png

[root@iZ25ix41uc3Z ~]# python --version
Python 3.10.9

下载 setuptools:

wget --no-check-certificate 
http://pypi.python.org/packages/source/s/setuptools/setuptools-
解压之后进入目录setuptools-0.6c11
安装python setup.py install

安装 pip,和 setuptools 过程类似:

wget --no-check-certificate 
https://github.com/pypa/pip/archive/1.5.5.tar.gz
解压之后进入目录pip-1.5.5
安装python setup.py install

看看 pip 安装是否成功,执行:

pip list

2.png

如果显示的不是上方的画面,则我们先安装 openssl:

yum install openssl openssl-devel -y

 然后再重新安装 python,别的不用重新安装了。

[root@iZ25ix41uc3Z Python-3.10.9]# pip list
pip (1.5.4)
setuptools (27.3.0)
wsgiref (0.1.2)

最后我们就可以安装 numpy,scipy 等科学计算库了。

pip install numpy
pip install scipy

3.png

最后验证一下 numpy

4.png

大功告成,如此一来我们已经成功安装 numpy


2.3 PyTorch安装详解

  先试试看 pip 安装能不能成功。输入命令 pip install pytorch,显示结果如下:

5.png

看来PyTorch不支持pip安装,这里提示到 pytorch.org 下载安装,同时,浏览器自动打开网址:

http://pytorch.org/#pip-install-pytorch

 跟着上面的安装步骤安装就是了,这里也可以去网上找找安装教程。因为这里不是我们的重点,讲多了也没什么意思。

 安装完成后,我们输入命令 python,进入 python 交互环境,写一段 pytorch 程序验证一下是不是安装成功了,这段代码调用 torch 的ones 方法,看看能不能正常显示结果:

6.png

看来没什么问题,安装成功了。下面,我们来一步步学习 pytorch 吧。


三、变量


 先看看 Tensor,pytorch 中的数据都是封装成 Tensor 来引用的,Tensor实际上就类似于 numpy 中的数组,两者可以自由转换。

 我们先生成一个3*4维的数组:

import torch
x = torch.Tensor(3,4)
print("x Tensor: ",x)


7.png

可以看到 torch.Tensor() 方法生成制定维度的随机数。

 下面看看 Variable 的基本操作,引用 Variable:

import torch
from torch.autograd import Variable
x=Variable(torch.Tensor(2,2))
print("x variable: ",x)

8.png

Variable 不光包含了数据,还包含了其他东西,那么,还包含什么东西呢?

 默认 Variable 是有导数 grad 的,x.data 是数据,这里 x.data 就是 Tensor。x.grad 是计算过程中动态变化的导数。

print ("x.data: ",x.data, ",x.grad: ",x.grad)

 此时 Variable 还未进行计算,因此 x.grad 为 None。


四、求导


 神经网络中的求导的作用是用导数对神经网络的权重参数进行调整。

 Pytorch 中为求导提供了专门的包,包名叫autograd。如果用autograd.Variable 来定义参数,则 Variable 自动定义了两个变量:data代表原始权重数据;而 grad 代表求导后的数据,也就是梯度。每次迭代过程就用这个 grad 对权重数据进行修正。

9.png

import torch
from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

 输出为:10.png

y=x+2
print(y)

 输出为:

11.png

z = y * y * 3
out = z.mean()
print(z, out)

12.png

输出为:

16.png

out.backward()

反向传播,也就是求导数的意思。输出 out 对 x 求导:

print(x.grad)

0.png


4.5 是怎么算出来的呢,从前面的公式可以看出 z=(x+2) * (x+2) * 3,它的导数是 3 * (x+2) / 2,当 x=1 时导数的值就是 3 * (1+2) / 2=4.5,和 pytorch 计算得出的结果是一致的。

 权值更新方法:


weight = weight + learning_rate * gradient
learning_rate = 0.01
for f in model.parameters():
f.data.sub_(f.grad.data * learning_rate)


 learning_rate 是学习速率,多数时候就叫做 lr,是学习步长,用步长 * 导数就是每次权重修正的 delta 值,lr 越大表示学习的速度越快,相应的精度就会降低。

相关文章
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习 ? 带你从入门到精通!!!
🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。
PyTorch深度学习 ? 带你从入门到精通!!!
|
5月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
813 13
|
12月前
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
1034 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
|
6月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
534 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
5月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
|
7月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
439 9
|
9月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
400 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
639 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1136 0

热门文章

最新文章

推荐镜像

更多