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实现手写数字识别功能

《使用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

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 ##一、 缘由及解决方法 把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用

【超级干货】2天速成PyTorch深度学习入门教程,缓解研究生焦虑

3、cnn基础 卷积神经网络 输入层 —输入图片矩阵 输入层一般是 RGB 图像或单通道的灰度图像,图片像素值在[0,255],可以用矩阵表示图片 卷积层 —特征提取 人通过特征进行图像识别,根据左图直的笔画判断X,右图曲的笔画判断圆 卷积操作 激活层 —加强特征 池化层 —压缩数据 全连接层 —进行分类 输出层 —输出分类概率 4、基于LeNet