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

相关文章

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

少走弯路,高效分析;了解生信云,访问 【生信圆桌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

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t

pytorch计算网络参数量和Flops

from torchsummary import summarysummary(net, input_size=(3, 256, 256), batch_size=-1) 输出的参数是除以一百万(/1000000)M, from fvcore.nn import FlopCountAnalysisinputs = torch.randn(1, 3, 256, 256).cuda()fl

从零开始学习JVM(七)- StringTable字符串常量池

1 概述 String应该是Java使用最多的类吧,很少有Java程序没有使用到String的。在Java中创建对象是一件挺耗费性能的事,而且我们又经常使用相同的String对象,那么创建这些相同的对象不是白白浪费性能吗。所以就有了StringTable这一特殊的存在,StringTable叫做字符串常量池,用于存放字符串常量,这样当我们使用相同的字符串对象时,就可以直接从StringTable

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型(LLM),涉及到多个步骤和资源,包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南,帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语言模型之前,了解以下基本概念至关重要: 生成式AI:通过大语言模型生成自然语言文本,例如GPT、BERT等。机器学习:通过数据训练模型,使其具备从数据中学习规律的能力。深度学习:机

如何使用 Python 读取 Excel 文件:从零开始的超详细教程

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩!||Day03为什么要用 Python 读取 Excel 文件?准备工作:安装所需工具安装 Python安装 Pandas安装 openpyxl 使用 Pandas 读取 Excel 文件什么是 Pandas?读取 Excel 文件的简单示例查看数据的前几行选择特定工作表只读取部分列跳过

【虚拟机/服务器】在Ubuntu Server上从零开始配置Nginx、Mysql、PHP7.0

1、升级当前系统数据源 sudo apt-get update && sudo apt-get upgrade 遇到询问是否继续,输入 y 或直接回车继续就好了 2、安装 Nginx sudo apt-get install nginx 安装完成之后就会默认自动开启 Nginx 服务器,可以通过 ps -ef | grep nginx 查看。 3、配置 Nginx 环境 1)替换默认