深度学习——pytorch基础(代码片段)

夏风喃喃 夏风喃喃     2022-12-09     271

关键词:

深度学习(1)——Pytorch基础

作者:夏风喃喃
参考:《动手学深度学习第二版》李沐


导入相关包:

import torch									#Pytorch支持
import os										#文件操作
import pandas as pd								#数据处理
import numpy as np								#Python算术运算包
from matplotlib import pyplot as plt			#绘图
from IPython import display						#交互式Python库
from torch.distributions import multinomial		#多项分布包
import random									#随机数

一. 数据操作

创建数据:

x = torch.arange(12)				#创建递增数据		
torch.zeros((2, 3, 4))				#创建全零数据
torch.ones((2, 3, 4))				#创建全一数据
torch.randn(3, 4)					#创建均值0,标准差1的正态分布数据
torch.tensor([[2, 1], [1, 2]])		#创建自定义张量数据
X = x.reshape(3, 4)					#数据整形
x.shape								#打印数据形状
len(x)								#打印数据长度
x.numel()							#打印数据元素个数

数据运算:

torch.exp(x)						#指数运算
torch.cat((X, Y), dim=0)			#数据拼接
X.sum(axis=0)						#数据内元素求和,降维
A.sum(axis=1, keepdims=True)		#数据内元素求和,不降维
A.mean(axis=0)						#数据平均值,降维
A.cumsum(axis=0)					#数据元素的累积总和
A.T									#矩阵转置
A * B								#哈达玛积,元素对应相乘
torch.dot(x, y)						#点积,对应元素乘积之和
torch.mv(A, x)						#向量积,矩阵与向量的乘积
torch.mm(A, B)						#矩阵乘法,矩阵与矩阵的乘积
torch.abs(u).sum()					#数据的L1范数
torch.norm(u)						#数据的L2范数

本地运算:

X[:] = X + Y						#X参与运算前后地址不变
X += Y								#X参与运算前后地址不变

tensor张量与numpy标量转换:

A = X.numpy()						#转换为标量
B = torch.tensor(A)					#转换为张量
a.item()							#单元素数据转换为标量
float(a)							#单元素数据转换为标量
int(a)								#单元素数据转换为标量

二. 数据预处理

创建数据集:

#创建文件夹,如果已存在不会报错
os.makedirs(os.path.join('..', 'data'),exist_ok = True) 
#创建数据集文件的地址
data_file = os.path.join('..', 'data', 'house_tiny.csv')
#打开数据集文件并写入数据
with open(data_file, 'w') as f:
	# 列名,必须有列名,否则第一行数据会被read_csv识别为表头
    f.write('NumRooms,Alley,Price\\n')  
    # 每行表示一个数据样本
    f.write('NA,Pave,127500\\n') 
    f.write('2,NA,106000\\n')
    f.write('4,NA,178100\\n')
    f.write('NA,NA,140000\\n')

读取数据集:

data = pd.read_csv(data_file)		#使用read_csv函数读取数据集

处理缺失值:

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]		#定位输入的列
inputs = inputs.fillna(inputs.mean())		#对输入列中NaN数据用列均值代替
#当一列只接受两种类型的类别值,则转换为两列,每列用1或0代表能否接受一种类别值
inputs = pd.get_dummies(inputs, dummy_na=True)

转换为张量格式:

#将预处理好的数据转换为张量格式,以便后续操作
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)

三. 绘图

为绘图做准备的三个函数:

def use_svg_display(): 
    """使用svg格式显示绘图。"""
    display.set_matplotlib_formats('svg')
def set_figsize(figsize=(3.5, 2.5)):  
    """设置matplotlib的图表大小。"""
    use_svg_display()
    plt.rcParams['figure.figsize'] = figsize
def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):
    """设置matplotlib的轴。"""
    axes.set_xlabel(xlabel)
    axes.set_ylabel(ylabel)
    axes.set_xscale(xscale)
    axes.set_yscale(yscale)
    axes.set_xlim(xlim)
    axes.set_ylim(ylim)
    if legend:
        axes.legend(legend)
    axes.grid()

plot绘图函数:

def plot(X, Y=None, xlabel=None, ylabel=None, legend=None, xlim=None,
         ylim=None, xscale='linear', yscale='linear',
         fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):
    """绘制数据点。"""
    if legend is None:
        legend = []

    set_figsize(figsize)
    axes = axes if axes else d2l.plt.gca()

    # 如果 `X` 有一个轴,输出True
    def has_one_axis(X):
        return (hasattr(X, "ndim") and X.ndim == 1 or
                isinstance(X, list) and not hasattr(X[0], "__len__"))

    if has_one_axis(X):
        X = [X]
    if Y is None:
        X, Y = [[]] * len(X), X
    elif has_one_axis(Y):
        Y = [Y]
    if len(X) != len(Y):
        X = X * len(Y)
    axes.cla()
    for x, y, fmt in zip(X, Y, fmts):
        if len(x):
            axes.plot(x, y, fmt)
        else:
            axes.plot(y, fmt)
    set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)

使用plot绘图函数绘图:

plot(x,[f(x),3 * x - 3],'x','f(x)',legend=['f(x)', 'Tangent line (x=1)'])

在这里插入图片描述

四. 自动求导

x.requires_grad_(True)				#确定自变量x,需要求梯度
y = 2 * torch.dot(x, x)				#因变量y的计算
y.backward()						#确定因变量y,需要反向传播
y.sum().backward()					#非标量向量求导,需要求和反向传播
x.grad								#得到dy/dx的梯度导数值
x.grad.zero_()						#计算下一次的梯度时,先需要梯度清零
u = y.detach()						#detach后,u为y的值,而不是y的表达式

五. 概率论

fair_probs = torch.ones([6])/6
#按fair_probs中数的大小为概率随机抽取一个数据并置为1,抽取后会放回
multinomial.Multinomial(1, fair_probs).sample()

pytorch学习笔记3.深度学习基础(代码片段)

...多分类22.全连接层23.激活函数与GPU加速24.测试根据龙良曲Pytorch学习视频整理,视频链接:【计算机-AI】PyTorch学这个就够了!(好课推荐)深度学习与PyTorch入门实战——主讲人龙 查看详情

深度学习---从入门到放弃pytorch基础(代码片段)

深度学习—从入门到放弃(一)pytorchTensor类似于numpy的array,pandas的dataframe;在pytorch里的数据结构是tensor,即张量tensor简单操作1.Flattenandreshape###Originalz:tensor([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]])Flatte 查看详情

深度学习基础:4.pytorch搭建基础网络模型(代码片段)

...始,巩固基础才能看懂复杂代码。Torch基本架构使用Pytorch之前,首先要理清楚Pytorch基本架构。Pytorch的核心库是torch,根据不同领域细分可以分成计算机视觉、自然语言处理和语音处理,这三个领域分别有自己对应... 查看详情

深度学习基础--多层感知机(mlp)(代码片段)

...层感知机(MLP)最近在阅读一本书籍–Dive-into-DL-Pytorch(动手学深度学习),链接:https://github.com/newmonkey/Dive-into-DL-PyTorch,自身觉得受益匪浅,在此记录下自己的学习历程。本篇主要记录关于多层... 查看详情

对比学习:《深度学习之pytorch》《pytorch深度学习实战》+代码

PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉、自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的AllenNLP,用于概率图模型的Pyro,扩展了PyTorch的功能。通... 查看详情

深度学习——基础(基于pytorch代码)(代码片段)

...数管理延后初始化自定义层读写文件GPU预备知识数据操作Pytorch中对数据(tensor张量)的操作类似于Numpy(ndarray),但由于深度学习大都是用GPU进行计算,而Numpy仅支持CPU计算,且Pytorch的张量类支持自动... 查看详情

狂肝两万字带你用pytorch搞深度学习!!!(代码片段)

深度学习基础知识和各种网络结构实战...狂肝两万字带你用pytorch搞深度学习!!!深度学习前言一、基本数据:Tensor1.1Tensor的创建1.2torch.FloatTensor1.3torch.IntTensor1.4torch.randn1.5torch.range1.6torch.zeros/ones/empty二、Tenso 查看详情

自然语言处理pytorch基础入门(必备基础知识)(代码片段)

PyTorch基础实践PyTorch基础安装PyTorch创建张量张量类型和大小张量操作索引,切片和连接张量和计算图CUDA张量练习Solutions总结PyTorch基础在本书中,我们广泛地使用PyTorch来实现我们的深度学习模型。PyTorch是一个开源、社区... 查看详情

「深度学习一遍过」必修10:pytorch框架的使用(代码片段)

...作形状查看形状更改增加维度压缩维度3 Tensor其他操作4 Pytorch网络定义与优化4.1基础网络定义接口 查看详情

深度学习及pytorch基础

【任务一】视频学习心得及问题总结根据下面三个视频的学习内容,写一个总结,最后列出没有学明白的问题。【任务二】代码练习在谷歌Colab上完成代码练习中的2.1、2.2、2.3、2.4节,关键步骤截图,并附一些自己的想法和解读... 查看详情

pytorchpytorch基础第0章(代码片段)

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052这是目录PyTorch的简介PyTorch构建深度学习模型的步骤搭建pytorch使用环境PyTorch的简介PyTorch是一个开源的机器学习框架,由Facebook的人工智能研究院(F... 查看详情

「深度学习一遍过」必修18:基于pytorch的语义分割模型实现(代码片段)

...型基础上实现膨胀卷积 1自定义5层普通卷积 模型结构 pytorch代码 fromtor 查看详情

深度学习pytorch大坑处理(代码片段)

深度学习pytorch大坑处理importtoralprint(torch.cuda.is_available())//false解决方法.https://download.pytorch.org/whl/torch_stable.html用迅雷下载进入AnacondaPrompt,输入condaactivatepytorch下载好torchvision-0.10.1+cu1 查看详情

pytorch基础部分(代码片段)

学习传送门:PyTorch基础入门Tensor支持的所有操作:传送门——PyTorch官方网站目录1.基础知识1.1特点1.2张量(Tensor)2.PyTorch的使用2.12.2基本Tensor运算加法Tensor与numpy.ndarray之间的转换区别2.3自动微分(Autograd)... 查看详情

8.1pytorch模型迁移(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

[九]深度学习pytorch-transforms图像增强(剪裁翻转旋转)(代码片段)

0.往期内容[一]深度学习Pytorch-张量定义与张量创建[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换[三]深度学习Pytorch-张量数学运算[四]深度学习Pytorch-线性回归[五]深度学习Pytorch-计算图与动态图机制[六]深度学习Pyto... 查看详情

pytorch深度学习框架:优雅而简洁的代码实现(代码片段)

 PyTorch是由Facebook发布的深度学习框架,旨在为研究人员和工程师提供快速、灵活和简单的实验平台。与其他框架相比,PyTorch具有简洁的API和灵活的动态计算图,使得构建和训练深度神经网络变得更加优雅和简洁。本... 查看详情

pytorch基础的基本概念(代码片段)

1.什么是Pytorch,为什么选择Pytroch?2.Pytroch的安装3.配置Python环境4.准备Python管理器5.通过命令行安装PyTorch6.PyTorch基础概念GPU云服务器默认提供了pytorch的环境,7.通用代码实现流程(实现一个深度学习的代码流程)importtorchimporttorch.nnasn... 查看详情