使用TensorDataset和DataLoader来简化

 
from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader
​
train_ds = TensorDataset(x_train, y_train)
train_dl = DataLoader(train_ds, batch_size=bs, shuffle=True)
​
valid_ds = TensorDataset(x_valid, y_valid)
valid_dl = DataLoader(valid_ds, batch_size=bs * 2)
 
def get_data(train_ds, valid_ds, bs):
    return (
        DataLoader(train_ds, batch_size=bs, shuffle=True),
        DataLoader(valid_ds, batch_size=bs * 2),
    )
 
 
 
  • 一般在训练模型时加上model.train(),这样会正常使用Batch Normalization和 Dropout
  • 测试的时候一般选择model.eval(),这样就不会使用Batch Normalization和 Dropout
import numpy as np
​
def fit(steps, model, loss_func, opt, train_dl, valid_dl):
    for step in range(steps):
        model.train()
        for xb, yb in train_dl:
            loss_batch(model, loss_func, xb, yb, opt)
​
        model.eval()
        with torch.no_grad():
            losses, nums = zip(
                *[loss_batch(model, loss_func, xb, yb) for xb, yb in valid_dl]
            )
        val_loss = np.sum(np.multiply(losses, nums)) / np.sum(nums)
        print('当前step:'+str(step), '验证集损失:'+str(val_loss))
 
 
from torch import optim
def get_model():
    model = Mnist_NN()
    return model, optim.SGD(model.parameters(), lr=0.001)
 
 
def loss_batch(model, loss_func, xb, yb, opt=None):
    loss = loss_func(model(xb), yb)
​
    if opt is not None:
        loss.backward()
        opt.step()
        opt.zero_grad()
​
    return loss.item(), len(xb)
 
 
 

三行搞定!

train_dl, valid_dl = get_data(train_ds, valid_ds, bs)
model, opt = get_model()
fit(25, model, loss_func, opt, train_dl, valid_dl)
 
 
 
 
 
​

Pytorch之数据处理的更多相关文章

  1. 【深度学习框架】使用PyTorch进行数据处理

      在深度学习中,数据的处理对于神经网络的训练来说十分重要,良好的数据(包括图像.文本.语音等)处理不仅可以加速模型的训练,同时也直接关系到模型的效果.本文以处理图像数据为例,记录一些使用PyTorc ...

  2. [源码解析] 机器学习参数服务器Paracel (3)------数据处理

    [源码解析] 机器学习参数服务器Paracel (3)------数据处理 目录 [源码解析] 机器学习参数服务器Paracel (3)------数据处理 0x00 摘要 0x01 切分需要 1.1 ...

  3. JuJu Beta Postmortem

    JuJu demo demo 项目github地址 JuJu   设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 完成基于Julia语言的NER mod ...

  4. 【转载】PyTorch系列 (二):pytorch数据读取

    原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorc ...

  5. Neural Network Programming - Deep Learning with PyTorch with deeplizard.

    PyTorch Prerequisites - Syllabus for Neural Network Programming Series PyTorch先决条件 - 神经网络编程系列教学大纲 每个 ...

  6. 深度学习框架PyTorch一书的学习-第六章-实战指南

    参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter6-实战指南 希望大家直接到上面的网址去查看代码,下面是本人的笔记 将上面地 ...

  7. 深度学习框架PyTorch一书的学习-第五章-常用工具模块

    https://github.com/chenyuntc/pytorch-book/blob/v1.0/chapter5-常用工具/chapter5.ipynb 希望大家直接到上面的网址去查看代码,下 ...

  8. 深度学习之PyTorch实战(3)——实战手写数字识别

    上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...

  9. 深度学习之PyTorch实战(2)——神经网络模型搭建和参数优化

    上一篇博客先搭建了基础环境,并熟悉了基础知识,本节基于此,再进行深一步的学习. 接下来看看如何基于PyTorch深度学习框架用简单快捷的方式搭建出复杂的神经网络模型,同时让模型参数的优化方法趋于高效. ...

  10. Pytorch 入门之Siamese网络

    首次体验Pytorch,本文参考于:github and PyTorch 中文网人脸相似度对比 本文主要熟悉Pytorch大致流程,修改了读取数据部分.没有采用原作者的ImageFolder方法:   ...

随机推荐

  1. 静态代码块-数组工具类Arrays

    静态代码块 静态代码块: 定义在成员位置,使用static修饰的代码块{}. 位置:类中方法外. 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行 格式: public clas ...

  2. Pytest插件pytest-rerunfailures失败重跑

    Pytest插件pytest-rerunfailures失败重跑 安装 pip install pytest-rerunfailures doc https://github.com/pytest-d ...

  3. 【大型软件开发】浅谈大型Qt软件开发(四)动态链接库的宏冲突问题、COM组件开发的常见问题

    最近工作的时候有一个链接库的对接工作,在对接时发生了一些小问题,这篇FAQ是办公室写这个库的工程师戴工写的,这里记录一下: 一.编译工程时报链接错误"不允许dllimport静态数据成员的定 ...

  4. ASP.NET Core - 入口文件

    1. 入口文件   一个应用程序总有一个入口文件,是应用启动代码开始执行的地方,这里往往也会涉及到应用的各种配置.当我们接触到一个新框架的时候,可以从入口文件入手,了解入口文件,能够帮助我们更好地理解 ...

  5. 大佬们的博客 && 友链

    博客 1.https://wiki.kimleo.net/ 查组合子查到的,活化石级别 2.https://tech.meituan.com/ 美团博客,查函数式查到的,我还看过一篇讲aop的非常经典 ...

  6. 汉诺塔 Java && Cpp 实现

    不论多少盘,都看成是两个盘在移动,只需要把上面的两个盘移动好就行. public static void hanoiTower(int num,char a,char b ,char c) { if( ...

  7. FineUI通过js事件条用后台方法实现弹窗

    一.html标签的onclick事件 <button type="button" class="btnUpdate" onclick="< ...

  8. 微信小程序开卡步骤采坑过程艰难

    在网上看到别人的文件觉得都不对,差点被带入坑里了.主要注意部分已标红. 会员卡的card_id 获取路径: 1.从公众号中的会员卡中获取 2.通过公众号创建卡券接口返回中获取 接口1:获取开卡插件参数 ...

  9. EULAR2021_推文_大多数免疫抑制剂对辉瑞新冠疫苗效果影响小

    尤其令人开心的是TNF抑制剂和抗IL-17!但是,糖皮质激素.利妥昔单抗.吗替麦考酚酯(MMF).阿巴西普(抑制T淋巴细胞激活)会明显降低疫苗接种效果.链接:http://note.youdao.co ...

  10. Blender插件:水滴生成器(Droplet Generator)

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链. 原文地址:https://www.mvrlink.com/droplet-generator/ 1.官方介绍: 适用于Blender 3.1及更 ...