Pytorch入门随手记

  1. 什么是Pytorch?

    Pytorch是Torch到Python上的移植(Torch原本是用Lua语言编写的)

    是一个动态的过程,数据和图是一起建立的。

  2. tensor.dot(tensor1,tensor2)//tensor各个对应位置相乘再相加

  3. print(net)可以输出网络结构

  4. Pytorch的动态性:网络参数可以有多个不固定的,例如:

    来源:https://morvanzhou.github.io/tutorials/machine-learning/torch/5-01-dynamic/

    最典型的例子就是 RNN, 有时候 RNN 的 time step 不会一样, 或者在 training 和 testing 的时候, batch_sizetime_step 也不一样, 这时, Tensorflow 就头疼了, Tensorflow 的人也头疼了. 哈哈, 如果用一个动态计算图的 Torch, 我们就好理解多了, 写起来也简单多了.

  5. 激活函数使用层和function,在效果上没什么区别

  6. 使用torch.nn.Sequential快速搭建模型

    torch.nn.Sequential(

    ​ #eg

    ​ torch.nn.linear(2,10),

    ​ torch.nn.ReLU(),

    ​ torch.nn.linear(10,2),

    )

这里使用的是匿名对象,所以print出来之后是没有类型名称(即self.hidden和self.predict之类的,输出的时候会显示hidden和predict).

  1. 保存和提取神经网络

    1. 保存

      torch.save(net,"net.pkl")#保存整个神经网络模型,类型名为pkl

      torch.save(net.state_dict(),"net_params.pkl")#只保存参数而不保存整个网络

    2. 提取

      net=torch.load("net.pkl")#提取网络

      net2=torch.nn.Sequential(

      这里只是举了用Sequential来创建网络的例子,如果不用这种匿名方法的话也是一样的,就是在提取参数之前要搭建一个和原网络完全一样的网络结构

      )

      net2.load_state_dict(torch.load("net_params.pkl"))#只提取参数

  2. 批训练(Mini Batch Training)

    BATCH_SIZE=5
    x=torch.linspace(1,10,10)
    y=torch.linspace(10,1,10)
    torch_dataset=Data.TensorDataset(data_tensor=x,target_tensor=y)
    loader=Data.DataLoader(
    dataset=torch_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,#shuffle如果设置为true,则每次batch都是选择的不一样的数据,设置为False,则每次batch的数据都一样。
    num_workers=2,#设置提取数据时候的线程数量
    )
    for epoch in range(3):
    for step,(batch_x,batch_y)in enumerate(loader):#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    #例如本例中,那个step就是提取的index
  3. 超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

    由此可见,超参数一般是人为指定的、定义在模型之前的一些全局变量,它对模型和训练的过程进行控制。习惯上,用大写来表示。

  4. 我觉得它第三个for循环和zip合起来还挺灵性的。

  5. len(train_loader)和len(train_loader.dataset)的区别

    这里举个例子:

    train_loader = torch.utils.data.DataLoader(
    dataset=torch_train_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=WORKERS)

    len(train_loader.dataset)=len(torch_train_dataset),也就是数据集的大小,和batch_size无关

    len(train_loader)=len(train_loader.dataset)/batch_size并向上取整

Pytorch入门随手记的更多相关文章

  1. [pytorch] Pytorch入门

    Pytorch入门 简单容易上手,感觉比keras好理解多了,和mxnet很像(似乎mxnet有点借鉴pytorch),记一记. 直接从例子开始学,基础知识咱已经看了很多论文了... import t ...

  2. pytorch 入门指南

    两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...

  3. 超简单!pytorch入门教程(五):训练和测试CNN

    我们按照超简单!pytorch入门教程(四):准备图片数据集准备好了图片数据以后,就来训练一下识别这10类图片的cnn神经网络吧. 按照超简单!pytorch入门教程(三):构造一个小型CNN构建好一 ...

  4. pytorch入门2.2构建回归模型初体验(开始训练)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  5. pytorch入门2.0构建回归模型初体验(数据生成)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  6. pytorch入门2.1构建回归模型初体验(模型构建)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  7. Pytorch入门——手把手教你MNIST手写数字识别

    MNIST手写数字识别教程 要开始带组内的小朋友了,特意出一个Pytorch教程来指导一下 [!] 这里是实战教程,默认读者已经学会了部分深度学习原理,若有不懂的地方可以先停下来查查资料 目录 MNI ...

  8. Pytorch入门上 —— Dataset、Tensorboard、Transforms、Dataloader

    本节内容参照小土堆的pytorch入门视频教程.学习时建议多读源码,通过源码中的注释可以快速弄清楚类或函数的作用以及输入输出类型. Dataset 借用Dataset可以快速访问深度学习需要的数据,例 ...

  9. Pytorch入门中 —— 搭建网络模型

    本节内容参照小土堆的pytorch入门视频教程,主要通过查询文档的方式讲解如何搭建卷积神经网络.学习时要学会查询文档,这样会比直接搜索良莠不齐的博客更快.更可靠.讲解的内容主要是pytorch核心包中 ...

随机推荐

  1. count(1) 与 count(*) 比较

    1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效 ...

  2. kotlin中值范围

    值范围表达式用rangeTo函数,该函数的操作符形式是二个点(..)另外还有in 和!in 相关操作符,任何可比较的大小的数据类型都可以定义值范围 值范围应用 fun main(arg: Array& ...

  3. MySQL truncate()函数的使用说明

    1.TRUNCATE()函数介绍 TRUNCATE(X,D) 是MySQL自带的一个系统函数. 其中,X是数值,D是保留小数的位数. 其作用就是按照小数位数,进行数值截取(此处的截取是按保留位数直接进 ...

  4. SpringBoot: 13.异常处理方式3(使用@ControllerAdvice+@ExceptionHandle注解)(转)

    问题:使用@ExceptionHandle注解需要在每一个controller代码里面都添加异常处理,会咋成代码冗余 解决方法:新建一个全局异常处理类,添加@ControllerAdvice注解即可 ...

  5. Pandas与Matplotlib结合进行可视化

    前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matplotlib配合绘制出折线图, 散点图, 饼图, 柱形图, 直方图等五大基本图形. Matplotlib是python中的一个 ...

  6. unity3d 嵌入iOS的 In App Purchase 应用程序内购买

    Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...

  7. ASP.NET关于UEditor简单配置和错误修正

    UEditor配置版本为:ueditor1_3_6-utf8-net,放置目录为:/UEditor 一./UEditor/ueditor.config.js文件需要设置: 1.URL修改为:var U ...

  8. 最新 智联java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.智联等10家互联网公司的校招Offer,因为某些自身原因最终选择了智联.6.7月主要是做系统复习.项目复盘.LeetCode ...

  9. java 访问数据库公共类

    package com.javaweb.mvc; import java.sql.*; /** * @author 公共数据访问类 * * Statement 和 PreparedStatement之 ...

  10. Django soft-delete软删除

    在django中,实现这个功能很简单,我们采用一个字段用来保存删除的时间.若记录没有被删除,那么设置该值为None,如果被删除,那么设置时间为删除的时间. class BaseSchema(model ...