
PyTorch
智云研
这个作者很懒,什么都没留下…
展开
-
PyTorch 强化学习 01.强化学习(DQN)
本教程介绍如何使用PyTorch从OpenAI Gym中的 CartPole-v0 任务上训练一个Deep Q Learning (DQN) 代理。1.任务代理人必须在两个动作之间做出决定 – 向左或向右移动推车 – 以使连接到它的杆保持直立。您可以在Gym网站上找到官方排行榜,里面包含各种算法以及可视化。当代理观察环境的当前状态并选择动作时,环境转换到新状态,并且还返回指示动作的后果的奖励。在此任务中,每增加一个时间步长的 奖励为+1,如果杆落得太远或者推车距离中心超过2.4...原创 2020-09-14 09:37:14 · 2493 阅读 · 0 评论 -
PyTorch 生成对抗网络 01.生成对抗网络
1. 简介本教程通过一个例子来对 DCGANs 进行介绍。我们将会训练一个生成对抗网络(GAN)用于在展示了许多真正的名人的图片后产生新的名人。 这里的大部分代码来自pytorch/examples中的 dcgan 实现,本文档将对实现进行进行全面 的介绍,并阐明该模型的工作原理以及为什么如此。但是不需要担心,你并不需要事先了解 GAN,但可能需要花一些事件来推理一下底层 实际发生的事情。此外,为了有助于节省时间,最好是使用一个GPU,或者两个。让我们从头开始。2. 生成对抗网络(Generativ原创 2020-09-14 09:30:00 · 732 阅读 · 0 评论 -
PyTorch 入门与代码模板
导读PyTorch1.0之后,越来越多的人选择使用PyTorch,今天给大家介绍一个github项目,作者通过自己使用PyTorch的实际工程经验,总结出了一套非常有用的使用PyTorch的最佳实践,涉及到使用PyTorch的方方面面,看了之后非常有收获!不是PyTorch的官方风格指南。本文总结了使用PyTorch框架进行深度学习的一年多经验中的最佳实践。请注意,我们分享的经验大多来自研究和创业的视角。这是一个开放的项目,欢迎其他合作者编辑和改进文档。该文档有三个主要部分。..原创 2020-09-07 09:14:03 · 583 阅读 · 0 评论 -
PyTorch文本:05.使用Sequence2Sequence网络和注意力进行翻译
在这个项目中,我们将讲解使用神经网络将法语翻译成英语。[KEY: > input, = target, < output]> il est en train de peindre un tableau .= he is painting a picture .< he is painting a picture .> pourquoi ne pas essayer ce vin delicieux ?= why not try that delicious wi原创 2020-09-03 10:09:05 · 822 阅读 · 0 评论 -
PyTorch文本:04.深度学习NLP中使用Pytorch
一、使用PyTorch进行深度学习1.深度学习构建模块:仿射变换, 非线性函数以及目标函数深度学习表现为使用更巧妙的方法将线性函数和非线性函数进行组合。非线性函数的引入使得训练出来的模型更加强大。在本节中,我们将学 习这些核心组件,建立目标函数,并理解模型是如何构建的。1.1 仿射变换PyTorch以及大多数的深度学习框架所做的事情都与传统的线性代数有些不同。它的映射输入是行而不是列。也就是说,下面代码输出的第i行 是输入的第i行进行A变换,并加上偏移项的结果。看下面的例子:# Aut原创 2020-08-31 16:47:34 · 1053 阅读 · 0 评论 -
PyTorch 文本:03.使用字符级RNN进行名字分类
我们将构建和训练字符级RNN来对单词进行分类。字符级RNN将单词作为一系列字符读取,在每一步输出预测和“隐藏状态”,将其先前的隐藏 状态输入至下一时刻。我们将最终时刻输出作为预测结果,即表示该词属于哪个类。具体来说,我们将在18种语言构成的几千个名字的数据集上训练模型,根据一个名字的拼写预测它是哪种语言的名字:$ python predict.py Hinton(-0.47) Scottish(-1.52) English(-3.57) Irish$ python predict.py S原创 2020-08-26 15:28:24 · 451 阅读 · 0 评论 -
PyTorch文本:02.使用字符级RNN生成名字
在上一个教程中, 中我们使用RNN网络对名字所属的语言进行分类。这一次我们会反过来根据语言生成名字。> python sample.py Russian RUSRovakovUantovShavakov> python sample.py German GERGerrenErengRosher> python sample.py Spanish SPASallaParerAllan> python sample.py Chinese CHIChanH原创 2020-08-25 14:09:12 · 413 阅读 · 0 评论 -
PyTorch文本:01.聊天机器人教程
在本教程中,我们探索一个好玩有趣的循环的序列到序列(sequence-to-sequence)的模型用例。我们将用Cornell Movie-Dialogs Corpus处的电影剧本来训练一个简单的聊天机器人。在人工智能研究领域中,对话模型是一个非常热门的话题。聊天机器人可以在各种设置中找到,包括客户服务应用和在线帮助。这些机器人通常 由基于检索的模型提供支持,这些模型的输出是某些形式问题预先定义的响应。在像公司IT服务台这样高度受限制的领域中,这些模型可能足够了, 但是,对于更一般的用例它们还不够健.原创 2020-08-24 09:25:26 · 2624 阅读 · 0 评论 -
PyTorch 图像:06.使用ONNX将模型转移至Caffe2和移动端
使用ONNX将模型转移至Caffe2和移动端在本教程中,我们将介绍如何使用 ONNX 将 PyTorch 中定义的模型转换为 ONNX 格式,然后将其加载到 Caffe2 中。一旦进入 Caffe2,我们就可以运行模型来仔细检查它是否正确导出,然后我们展示了如何使用 Caffe2 功能(如移动导出器)在移动设备上执行模型。在本教程中,您需要安装onnx和Caffe2。您可以使用pip install onnx来获取 onnx。注意:本教程需要 PyTorch master 分支,可以按照这里说原创 2020-08-11 09:42:55 · 737 阅读 · 1 评论 -
PyTorch 图像:05.生成对抗示例
生成对抗示例本教程将提高您对ML(机器学习)模型的安全漏洞的认识,并将深入了解对抗性机器学习的热门话题。您可能会惊讶地发现,为图像添加难以察觉的扰动会导致模型性能大不相同。鉴于这是一个教程,我们将通过图像分类器上的示例探讨该主题。具体来说,我们将使用第一种也是最流行的攻击方法之一,即快速梯度符号攻击算法(FGSM)来迷惑 MNIST 分类器。1.威胁模型对于上下文,有许多类别的对抗性攻击,每种攻击具有不同的目标和对攻击者知识的假设。然而,通常,总体目标是向输入数据添加最少量的扰动以引起期望的错误原创 2020-08-11 09:34:52 · 812 阅读 · 1 评论 -
PyTorch 图像:04.使用 PyTorch 进行 Neural-Transfer
1.简介本教程主要讲解如何实现由 Leon A. Gatys,Alexander S. Ecker和Matthias Bethge提出的Neural-Style算法。Neural-Style 或者叫 Neural-Transfer,可以让你使用一种新的风格将指定的图片进行重构。 这个算法使用三张图片,一张输入图片,一张内容图片和一张风格图片,并将输入的图片变得与内容图片相似,且拥有风格图片的优美风格。2.基本原理我们定义两个间距,一个用于内容D_C,另一个用于风格D_S。D_C测量两张图片内容.原创 2020-08-11 09:27:19 · 336 阅读 · 0 评论 -
PyTorch 图像:03.空间变换器网络
在本教程中,您将学习如何使用称为空间变换器网络的视觉注意机制来扩充您的网络。你可以在DeepMind paper 阅读更多有关空间变换器网络的内容。空间变换器网络是对任何空间变换的差异化关注的概括。空间变换器网络(简称STN)允许神经网络学习如何在输入图像上执行空间变换, 以增强模型的几何不变性。例如,它可以裁剪感兴趣的区域,缩放并校正图像的方向。而这可能是一种有用的机制,因为CNN对于旋转和 缩放以及更一般的仿射变换并不是不变的。关于STN的最棒的事情之一是能够简单地将其插入任何现有的C...原创 2020-08-11 09:21:20 · 408 阅读 · 0 评论 -
PyTorch 图像:02.微调 Torchvision 模型
在本教程中,我们将深入探讨如何对 torchvision 模型进行微调和特征提取,所有这些模型都已经预先在1000类的magenet数据集上训练完成。 本教程将深入介绍如何使用几个现代的CNN架构,并将直观展示如何微调任意的PyTorch模型。由于每个模型架构是有差异的,因此没有 可以在所有场景中使用的微调代码样板。然而,研究人员必须查看现有架构并对每个模型进行自定义调整。在本文档中,我们将执行两种类型的转移学习:微调和特征提取。在微调中,我们从预训练模型开始,更新我们新任务的所有模型参数,实质上是原创 2020-08-11 09:16:02 · 957 阅读 · 0 评论 -
PyTorch 图像:01.微调基于 torchvision 0.3的目标检测模型
在本教程中,我们将微调在 Penn-Fudan 数据库中对行人检测和分割的已预先训练的 Mask R-CNN 模型。它包含170个图像和345个行人实例,我们 将用它来说明如何在 torchvision 中使用新功能,以便在自定义数据集上训练实例分割模型。1.定义数据集对于训练对象检测的引用脚本,实例分割和人员关键点检测要求能够轻松支持添加新的自定义数据。数据集应该从标准的类torch.utils.data.Dataset继承而来,并实现_len和_getitem_我们要求的唯一特性是数据集的.原创 2020-08-05 09:44:30 · 797 阅读 · 1 评论 -
PyTorch强化:05.PyTorch 保存和加载模型
当保存和加载模型时,需要熟悉三个核心功能:torch.save:将序列化对象保存到磁盘。此函数使用Python的pickle模块进行序列化。使用此函数可以保存如模型、tensor、字典等各种对象。 torch.load:使用pickle的unpickling功能将pickle对象文件反序列化到内存。此功能还可以有助于设备加载数据。 torch.nn.Module.load_state_dict:使用反序列化函数 state_dict 来加载模型的参数字典。1.什么是状态字典:state_...原创 2020-07-22 11:02:11 · 1080 阅读 · 0 评论 -
PyTorch 强化:04.混合前端的seq2seq模型部署
本教程将介绍如何是seq2seq模型转换为PyTorch可用的前端混合Torch脚本。我们要转换的模型来自于聊天机器人教程Chatbot tutorial。1.混合前端在一个基于深度学习项目的研发阶段, 使用像PyTorch这样即时eager、命令式的界面进行交互能带来很大便利。 这使用户能够在使用Python数据结构、控制流操作、打印语句和调试实用程序时通过熟悉的、惯用的Python脚本编写。尽管即时性界面对于研究和试验应用程序是一个有用的工具,但是对于生产环境中部署模型时,使用基于图形gra原创 2020-07-22 10:53:02 · 511 阅读 · 0 评论 -
PyTorch强化:03.PyTorch 迁移学习
实际中,基本没有人会从零开始(随机初始化)训练一个完整的卷积网络,因为相对于网络,很难得到一个足够大的数据集[网络很深, 需要足够大数据集]。通常的做法是在一个很大的数据集上进行预训练得到卷积网络ConvNet, 然后将这个ConvNet的参数作为目标任务的初始化参数或者固定这些参数。转移学习的两个主要场景:微调Convnet:使用预训练的网络(如在imagenet 1000上训练而来的网络)来初始化自己的网络,而不是随机初始化。其他的训练步骤不变。 将Convnet看成固定的特征提取器:首先固定原创 2020-07-22 10:33:20 · 195 阅读 · 0 评论 -
PyTorch强化:02.PyTorch 小试牛刀
1 PyTorch的核心是两个主要特征:一个n维张量,类似于numpy,但可以在GPU上运行 搭建和训练神经网络时的自动微分/求导机制本章节我们将使用全连接的ReLU网络作为运行示例。该网络将有一个单一的隐藏层,并将使用梯度下降训练,通过最小化网络输出和真正 结果的欧几里得距离,来拟合随机生成的数据。2.张量2.1 热身: Numpy在介绍PyTorch之前,本章节将首先使用numpy实现网络。 Numpy提供了一个n维数组对象,以及许多用于操作这些数组的 函数。Numpy是用...原创 2020-07-22 10:02:18 · 252 阅读 · 0 评论 -
PyTorch强化:01.PyTorch 数据加载和处理
PyTorch提供了许多工具来简化和希望数据加载,使代码更具可读性。1.下载安装包scikit-image:用于图像的IO和变换 pandas:用于更容易地进行csv解析from __future__ import print_function, divisionimport osimport torchimport pandas as pd #用于更容易地进行csv解析from skimage import io, transform #用于图像的IO和变换import numpy原创 2020-07-22 09:49:10 · 335 阅读 · 0 评论 -
PyTorch入门:05.PyTorch 数据并行处理
可选择:数据并行处理(文末有完整代码下载) 作者:Sung Kim和Jenny Kang在这个教程中,我们将学习如何用 DataParallel 来使用多 GPU。 通过 PyTorch 使用多个 GPU 非常简单。你可以将模型放在一个 GPU:device = torch.device("cuda:0")model.to(device)然后,你可以复制所有的张量到 GPU:mytensor = my_tensor.to(device)请注意,只是调用 my_tensor.to(..原创 2020-07-21 13:22:01 · 234 阅读 · 0 评论 -
PyTorch入门:04.PyTorch 图像分类器
你已经了解了如何定义神经网络,计算损失值和网络里权重的更新。现在你也许会想应该怎么处理数据?通常来说,当你处理图像,文本,语音或者视频数据时,你可以使用标准 python 包将数据加载成 numpy 数组格式,然后将这个数组转换成 torch.*Tensor对于图像,可以用 Pillow,OpenCV 对于语音,可以用 scipy,librosa 对于文本,可以直接用 Python 或 Cython 基础数据加载模块,或者用 NLTK 和 SpaCy特别是对于视觉,我们已经创建了一个叫做原创 2020-07-21 11:30:08 · 151 阅读 · 0 评论 -
PyTorch入门:03.PyTorch神经网络
神经网络神经网络可以通过torch.nn 包来构建。现在对于自动梯度(autograd)有一些了解,神经网络是基于自动梯度 (autograd)来定义一些模型。一个nn.Module 包括层和一个方法forward(input) 它会返回输出(output)。例如,看一下数字图片识别的网络:这是一个简单的前馈神经网络,它接收输入,让输入一个接着一个的通过一些层,最后给出输出。一个典型的神经网络训练过程包括以下几点:1.定义一个包含可训练参数的神经网络2.迭代整个输入...原创 2020-07-21 11:04:24 · 179 阅读 · 0 评论 -
PyTorch入门:02.PyTorch自动微分
autograd 包是 PyTorch 中所有神经网络的核心。首先让我们简要地介绍它,然后我们将会去训练我们的第一个神经网络。该 autograd 软件包为 Tensors 上的所有操作提供自动微分。它是一个由运行定义的框架,这意味着以代码运行方式定义你的后向传播,并且每次迭代都可以不同。我们从 tensor 和 gradients 来举一些例子。1、TENSORtorch.Tensor 是包的核心类。如果将其属性.requires_grad 设置为 True,则会开始跟踪针对 tensor 的所.原创 2020-07-21 10:40:45 · 216 阅读 · 0 评论 -
PyTorch 入门:01.PyTorch 入门
什么是PyTorch?PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群:NumPy 的替代品,可以利用 GPU 的性能进行计算。 深度学习研究平台拥有足够的灵活性和速度开始学习Tensors (张量)Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。from __future__ import print_functionimport torch构造一个5×3矩阵,不初始化。x = ..原创 2020-07-21 10:00:10 · 136 阅读 · 0 评论 -
PyTorch学习:01.PyTorch简介与下载安装
第一章:PyTorch之简介与下载1PyTorch简介要介绍PyTorch之前,不得不说一下Torch。Torch是一个有大量机器学习算法支持的科学计算框架,是一个与Numpy类似的张量(Tensor)操作库,其特点是特别灵活,但因其采用了小众的编程语言是Lua,所以流行度不高,这也就有PyTorch的出现。所以其实Torch是PyTorch的前身,它们的底层语言相同,只是使用了不同的上层包装语言。PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。.原创 2020-07-21 09:09:02 · 477 阅读 · 0 评论