Re:从零开始的PyTorch生活 week1

2024-04-26 10:32

本文主要是介绍Re:从零开始的PyTorch生活 week1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Re:从零开始的PyTorch生活

Day1 6月28

一、关于tensor

辨析-1

-1可以表示最后一行/列

x=tensor([[-0.1859,  1.3970,  0.5236],[ 2.3854,  0.0707,  2.1970],[-0.3587,  1.2359,  1.8951],[-0.1189, -0.1376,  0.4647],[-1.8968,  2.0164,  0.1092]])
print(x[:, -1])

会打印最后一列:tensor([0.5236, 2.1970,1.8951, 0.4647, 0.1092])

-1也可以表示缺省

在view()函数里

x=torch.randn(4,4)#4行4列
y=x.view(16)#形成16维的向量
z=x.view(-1,8)#view的-1缺省行数,但是已知列数是8,所以行数是2
print(x)
print(y)
print(z)
tensor([[ 0.5618,  0.6179, -0.6277,  0.3646],[ 0.9595, -0.9613, -0.6899, -0.2878],[-1.1062, -0.6001,  0.4027,  0.4323],[ 0.0840,  0.1004,  0.9699, -0.5401]])
tensor([ 0.5618,  0.6179, -0.6277,  0.3646,  0.9595, -0.9613, -0.6899, -0.2878,-1.1062, -0.6001,  0.4027,  0.4323,  0.0840,  0.1004,  0.9699, -0.5401])
tensor([[ 0.5618,  0.6179, -0.6277,  0.3646,  0.9595, -0.9613, -0.6899, -0.2878],[-1.1062, -0.6001,  0.4027,  0.4323,  0.0840,  0.1004,  0.9699, -0.5401]])

辨析randn和rand

torch.rand(*sizes, out=None) → Tensor

  • randn:正态分布, μ \mu μ=0, σ \sigma σ=1
  • rand:包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。

Day2 6月29

早上:看到一篇好的文章,讲的是python的切片操作,重点掌握的是切片的3个参数[start:\end:step]

step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。

下午:看了Autograd

一、requires_grad

这是每个Tensor都有的参数,默认是False。

x = torch.ones(2, 2, requires_grad=True)

设置为True之后,会追踪与它相关的计算

所以,求导的时候,x.grad会一直回溯到设置为True的地方,中间的过程比如y=x^3,z=3y…会算在导数里

二、backward()

torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False, grad_variables=None)

传入的参数tensors表示雅可比向量积中,作为相乘向量的v

backward会自动对tensor计算雅克比矩阵,而v是用来确定最终输出的是哪个变量的偏导向量(Page25)

实际上,自己用草稿纸推一下就很明白了。

三、神经网络

一个典型的神经网络训练过程包括以下几点:(page27)
1.定义一个包含可训练参数的神经网络(class Net(nn.Module)😃

2.迭代整个输入(循环)
3.通过神经网络处理输入(optimizer.zero_grad()清零梯度缓存器 output = net(input))
4.计算损失(loss)(loss = criterion(output, target) )
5.反向传播梯度到神经网络的参数( loss.backward() )
6.更新网络的参数,典型的用一个简单的更新方法(Optimize包 optimizer.step())

Day3 6月30

一、Net

  • 激励函数: leakyReLU和Tanh是比较流行的,提供好的非线性特征

  • 隐藏层与输入层的大小不要相差太多(待探究原因)

  • 损失函数:

    • 交叉熵损失函数:适合期望标签值为0/1的情况
    • MSE:(待探究)

二、CNN

卷积神经网络

卷积:一般是提取图片特征

  • padding : 在图片四周补上0,可以使得feature map 和输入的图片尺寸相同,也可以使边缘的数据被扫描的次数增多

    • 如果边缘的东西不重要(比如正方形照片识别圆形标志,四周是边角料),就不用padding了
  • Batch Normalization:批归一化,防止梯度消失

  • Pooling层: 降维操作,比如2x2的pool可以把2nx2n的图片降维成为nxn的。

    而且还与激励函数比较相似,都没有待定系数,跟在卷积后面,是产生非线性的效果(待探究)

    • Max Pooling:取最大
    • Average Pooling:取平均
    • 二者都各有好处,具体到任务里要实验

三、RNN

循环神经网络

循环层

  • 特点:把前一次输入的内容或其中间的激励值,以及当前这一次的输入值,一起作为网络的输入
  • 好处:时序上,前一次的内容对这一次的输入有影响,就可以被学习

现在比较流行的是LSTM与GRU

LSTM

  • 实际上有超多的参数,所以实际工作里,大多只使用一层LSTM,2层就非常多了
  • 一个以时序输入的Sequence,如果其前后有联系,就可以根据上文对下文进行提示或限制,那么,用LSTM网络可以去记忆时序之间的概率关系

Day4 7月3日 摸了2天鱼QAQ

今天开始学习seq2seq模型(太难了)

还是学习字符级RNN名字分类吧

首先,这是一个字符级的,应该是用abcd看成独热向量,所以可以用一个max_lenth作为固定的input_size去训练吧

其次,怎么设置这个RNN的层呢,设置一个隐藏层和输出层就好

貌似这周得断更了,好多论文要看(留下了不学无术的泪水)

这篇关于Re:从零开始的PyTorch生活 week1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

pytorch自动求梯度autograd的实现

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

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

pytorch之torch.flatten()和torch.nn.Flatten()的用法

《pytorch之torch.flatten()和torch.nn.Flatten()的用法》:本文主要介绍pytorch之torch.flatten()和torch.nn.Flatten()的用... 目录torch.flatten()和torch.nn.Flatten()的用法下面举例说明总结torch

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu