关键词:
深度学习(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... 查看详情