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

相关文章

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

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

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

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.分布式数据

判断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