目录

夜雨飘零

记录精彩的程序人生

标签: PaddlePaddle (50)

《PaddlePaddle从入门到炼丹》十——VisualDL 训练可视化 有更新!

前言 VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能。可以这样说:“所见即所得”。我们可以借助VisualDL来观察我们训练的情况,方便我们对训练的模型进行分析,改善模型的收敛情况。 scalar,趋势图,可用于训练测试误差的展示 image, 图片的可视化,可用于卷积层或者其他参数的图形化展示 histogram, 用于参数分布及变化趋势的展示 graph,用于训练模型结构的可视化 以上的图像来自VisualDL的Github 既然那么方便,那么我们就来尝试一下吧。VisualDL底层采用C++编写,但是它在提供C++ SDK的同时,也支持Python SDK,我们主要是使用Python的SDK。顺便说一下,VisualDL除了支持PaddlePaddle,之外,还支持pytorch, mxnet在内的大部分主流DNN平台。 VisualDL的安装 本章只讲述在Ubuntu系统上的安装和使用,Mac的操作应该也差不多。 使用pip安装 使用pip安装非常简单,只要一条命令就够了,如下: pip3 insta....

《PaddlePaddle从入门到炼丹》九——迁移学习 有更新!

前言 在深度学习训练中,例如图像识别训练,每次从零开始训练都要消耗大量的时间和资源。而且当数据集比较少时,模型也难以拟合的情况。基于这种情况下,就出现了迁移学习,通过使用已经训练好的模型来初始化即将训练的网络,可以加快模型的收敛速度,而且还能提高模型的准确率。这个用于初始化训练网络的模型是使用大型数据集训练得到的一个模型,而且模型已经完全收敛。最好训练的模型和预训练的模型是同一个网络,这样可以最大限度地初始化全部层。 初步训练模型 本章使用的预训练模型是PaddlePaddle官方提供的ResNet50网络模型,训练的数据集是ImageNet,它的下载地址为:http://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_pretrained.zip ,读者可以下载其他更多的模型,可以在这里下载。下载之后解压到models目录下。 编写一个pretrain_model.py的Python程序,用于初步训练模型。首先导入相关的依赖包。 import os import shutil import paddle as paddle imp....

《PaddlePaddle从入门到炼丹》八——模型的保存与使用 有更新!

前言 本系列教程中,前面介绍的都没有保存模型,训练之后也就结束了。那么本章就介绍如果在训练过程中保存模型,用于之后预测或者恢复训练,又或者由于其他数据集的预训练模型。本章会介绍三种保存模型和使用模型的方式。 训练模型 在训练模型的过程中我们可以随时保存模型,当时也可以在训练开始之前加载之前训练过程的模型。为了介绍这三个保存模型的方式,一共编写了三个Python程序进行介绍,分别是save_infer_model.py、 save_use_params_model.py、save_use_persistables_model.py。 导入相关的依赖库 import os import shutil import paddle as paddle import paddle.dataset.cifar as cifar import paddle.fluid as fluid 定义一个残差神经网络,这个是目前比较常用的一个网络。该神经模型可以通过增加网络的深度达到提高识别率,而不会像其他过去的神经模型那样,当网络继续加深时,反而会损失精度。 # 定义残差神经网络(ResNet) def .....

《PaddlePaddle从入门到炼丹》七——强化学习 有更新!

前言 本章介绍使用PaddlePaddle实现强化学习,通过自我学习,完成一个经典控制类的游戏,相关游戏介绍可以在Gym官网上了解。我们这次玩的是一个CartPole-v1游戏,操作就是通过控制滑块的左右移动,不让竖着的柱子掉下来。利用强化学习的方法,不断自我学习,通过在玩游戏的过程中获取到奖励或者惩罚,学习到一个模型。在王者荣耀中的超强人机使用的AI技术也类似这样。 PaddlePaddle程序 创建一个DQN.py的Python文件。导入项目所需的依赖库,如果还没安装gym的话,可以通过命令pip3 install gym安装。 import numpy as np import paddle.fluid as fluid import random import gym from collections import deque from paddle.fluid.param_attr import ParamAttr 定义一个简单的网络,这个网络只是由4个全连接层组成,并为每个全连接层指定参数的名称。指定参数的作用是为了之后更新模型参数使用的,因为之后会通过这个网络生成两个......

《PaddlePaddle从入门到炼丹》六——生成对抗网络 有更新!

@[TOC] 前言 我们上一章使用MNIST数据集进行训练,获得一个可以分类手写字体的模型。如果我们数据集的数量不够,不足于让模型收敛,最直接的是增加数据集。但是我们收集数据并进行标注是非常消耗时间了,而最近非常火的生成对抗网络就非常方便我们数据的收集。对抗生成网络可以根据之前的图片训练生成更多的图像,已达到以假乱真的目的。 训练并预测 创建一个GAN.py文件。首先导入所需要的Python包,其中matplotlib包是之后用于展示出生成的图片。 import numpy as np import paddle import paddle.fluid as fluid import matplotlib.pyplot as plt 定义网络 生成对抗网络由生成器和判别器组合,下面的代码片段就是一个生成器,生成器的作用是尽可能生成满足判别器条件的图像。随着以上训练的进行,判别器不断增强自身的判别能力,而生成器也不断生成越来越逼真的图片,以欺骗判别器。生成器主要由两组全连接和BN层、两组转置卷积运算组成,其中最后一层的卷积层的卷积核数量是1,因为输出的图像是一个灰度图的手写字体图片。 .....

《PaddlePaddle从入门到炼丹》五——循环神经网络 有更新!

前言 除了卷积神经网络,深度学习中还有循环神经网络也是很常用的,循环神经网络更常用于自然语言处理任务上。我们在这一章中,我们就来学习如何使用PaddlePaddle来实现一个循环神经网络,并使用该网络完成情感分析的模型训练。 训练模型 创建一个text_classification.py的Python文件。首先导入Python库,fluid和numpy库我们在前几章都有使用过,这里就不重复了。这里主要结束是imdb库,这个是一个数据集的库,这个是数据集是一个英文的电影评论数据集,每一条数据都会有两个分类,分别是正面和负面。 import paddle import paddle.dataset.imdb as imdb import paddle.fluid as fluid import numpy as np 循环神经网络发展到现在,已经有不少性能很好的升级版的循环神经网络,比如长短期记忆网络等。一下的代码片段是一个比较简单的循环神经网络,首先是经过一个fluid.layers.embedding(),这个是接口是接受数据的ID输入,因为输入数据时一个句子,但是在训练的时候我们是.....

《PaddlePaddle从入门到炼丹》四——卷积神经网络 有更新!

前言 上一章我们通过学习线性回归例子入门了深度学习,同时也熟悉了PaddlePaddle的使用方式,那么我们在本章学习更有趣的知识点卷积神经网络。深度学习之所以那么流行,很大程度上是得益于它在计算机视觉上得到非常好的效果,而在深度学习上几乎是使用卷积神经网络来提取图像的特征的。在PaddlePaddle上如何定义一个卷积神经网络,并使用它来完成一个图像识别的任务呢。在本章我们通过学习MNIST图像数据集的分类例子,来掌握卷积神经网络的使用。 训练模型 创建一个mnist_classification.py文件,首先导入所需得包,这次使用到了MNIST数据集接口,也使用了处理图像得工具包。 import numpy as np import paddle as paddle import paddle.dataset.mnist as mnist import paddle.fluid as fluid from PIL import Image import matplotlib.pyplot as plt 在图像识别上,使用得算法也经过了多次的迭代更新,比如多层感知器,在卷积神经网.....

《PaddlePaddle从入门到炼丹》三——线性回归 有更新!

前言 在第二章,我们已经学习了如何使用PaddlePaddle来进行加法计算,从这个小小的例子中,我们掌握了PaddlePaddle的使用方式。在本章中,我们将介绍使用PaddlePaddle完成一个深度学习非常常见的入门例子——线性回归,我们将分别使用自定义数据集和使用PaddlePaddle提供的数据集接口来训练一个线性回归模型。 使用自定义数据 在这一部分,我们将介绍整个线性回归从定义网络到使用自定义的数据进行训练,最后验证我们网络的预测能力。 首先导入PaddlePaddle库和一些工具类库。 import paddle.fluid as fluid import paddle import numpy as np 定义一个简单的线性网络,这个网络非常简单,结构是:输出层-->>隐层-->>输出层,这个网络一共有2层,因为输入层不算网络的层数。更具体的就是一个大小为100,激活函数是ReLU的全连接层和一个输出大小为1的全连接层,就这样构建了一个非常简单的网络。这里使用输入fluid.layers.data()定义的输入层类似fluid.layers......

《PaddlePaddle从入门到炼丹》二——计算1+1 有更新!

前言 在第一章介绍了PaddlePaddle的安装,接下来我们将介绍如何使用PaddlePaddle。PaddlePaddle是百度在2016年9月27日开源的一个深度学习框架,也是目前国内唯一一个开源的深度学习框架。PaddlePaddle在0.11.0版本之后,开始推出Fluid版本,Fluid版本相对之前的V2版本,Fluid的代码结构更加清晰,使用起来更加方便。这本章中我们将会介绍如何使用PaddlePaddle来计算1+1,选择这个简单的例子主要是为了让读者了解PaddlePaddle的Fluid版本的使用,掌握PaddlePaddle的使用流程。我们讲过介绍如何使用PaddlePaddle定义一个张量和如何对张量进行计算。 计算常量的1+1 PaddlePaddle类似一个科学计算库,比如Python下我们使用的numpy,提供的大量的计算操作,但是PaddlePaddle的计算对象是张量。我们下面就编写一个constant_sum.pyPython文件,使用PaddlePaddle计算一个[[1, 1], [1, 1]] * [[1, 1], [1, 1]]。 首先导入P....

《PaddlePaddle从入门到炼丹》一——新版本PaddlePaddle的安装 有更新!

前言 这一章我们介绍如何安装新版本的PaddlePaddle,这里说的新版本主要是说Fluid版本。Fluid 是设计用来让用户像Pytorch和Tensorflow Eager Execution一样执行程序。在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述Operator图或者一系列层的符号描述,而是像通用程序那样描述训练或者预测的过程。也就是说PaddlePaddle从Fluid版本开始使用动态图机制,所以我们这个系列也是使用Fluid版本编写的教程。 环境 系统:64位Windows 10专业版,64位Ubuntu 16.04 Python环境:Python 3.5 内存:8G Windows下安装 PaddlePaddle在1.2版本之后开始支持Windows,也就是说使用Windows的用户不需要再安装Docker容器,或者使用Windows的Liunx子系统,直接可以在Windows系统本身安装PaddlePaddle。下面我们就介绍如何在Windows安装PaddlePaddle,分为两个部分介绍,首先安装Python 3.5环境,然后再使用命令安装Pa......

基于PaddlePaddle实现的DeepSpeech2端到端中文语音识模型 有更新!

本项目是基于PaddlePaddle的DeepSpeech 项目开发的,做了较大的修改,方便训练中文自定义数据集,同时也方便测试和使用。DeepSpeech2是基于PaddlePaddle实现的端到端自动语音识别(ASR)引擎,其论文为《Baidu's Deep Speech 2 paper》 ,本项目同时还支持各种数据

基于PaddlePaddle实现人脸关键点检测模型MTCNN 有更新!

前言 前一章我们已经介绍了常见的人脸数据集,在本章将要进行人脸识别的第二步人脸检测。在人脸识别任务中,首先是需要检查一张图片中是包含有人脸,然后把这个人脸裁剪出来,然后使用脸部的关键点进行人脸对齐,最后使用人脸对比方式完成人脸识别。 训练PNet 模型 MTCNN模型一共有三个模型。

常见公开人脸数据集的获取和制作自定义人脸数据集 有更新!

前言 开发人脸识别系统,人脸数据集是必须的。所以在我们开发这套人脸识别系统的准备工作就是获取人脸数据集。本章将从公开的数据集到自制人脸数据集介绍,为我们之后开发人脸识别系统做好准备。 公开人脸数据集 公开的人脸数据集有很多,本中我们就介绍几个比较常用的人脸数据集。 CelebA人脸数据集 官方提供的下载地址:https://pan.baidu.com/s/1eSNpdRG#list/path=%2F 该数据集下载后有3个文件夹,Anno文件夹是存放标注文件的,Eval文件夹是存放评估列表文件的,Img文件是存放图片文件的。 Img中有3中类型的图像文件,其中 img_align_celeba.zip是经过对人脸居中,裁剪,并统一大小为178*178的jpg图片; img_align_celeba_png.7z中的图片跟img_align_celeba.zip中的图片一样,唯一不同的是这些图片是png格式的,所以这些图片要大得多。 img_celeba.7z这个是人脸图片的原始图片,没有经过居中裁剪等处理的图片。 Anno文件夹中有5个标注文件,其中 identity_CelebA.......

PaddlePaddle实现手写藏文识别 有更新!

前言 中央民族大学创业团队巨神人工智能科技在科赛网公开了一个TibetanMNIST正是形体藏文中的数字数据集,TibetanMNIST数据集的原图片中,图片的大小是350*350的黑白图片,图片文件名称的第一个数字就是图片的标签,如0_10_398.jpg这张图片代表的就是藏文的数字0。在本项目中我们结合第四章所学的卷积神经网络,来完成TibetanMNIST数据集的分类识别。 导入所需的包 主要是使用到PaddlePaddle的fluid和paddle依赖库,cpu_count库是获取当前CPU的数量的,matplotlib用于展示图片。 import paddle.fluid as fluid import paddle import numpy as np from PIL import Image import os from multiprocessing import cpu_count import matplotlib.pyplot as plt 生成图像列表 因为TibetanMNIST数据集已经在科赛网发布了,所以我们创建项目之前还需要在科赛网中把数据集下载下来.....

Caffe模型转PaddlePaddle的Fluid版本预测模型 有更新!

前言 有不少开发者在学习深度学习框架的时候会开源一些训练好的模型,我们可以使用这些模型来运用到我们自己的项目中。如果使用的是同一个深度学习框架,那就很方便,可以直接使用,但是如果时不同深度学习框架,我们就要对模型转换一下。下面我们就介绍如何把Caffe的模型转换成PaddlePaddle的Fluid模型。 环境准备 在线安装最新发布的PaddlePaddle,可以使用pip命令直接在线安装PaddlePaddle。 pip install paddlepaddle 下在安装最新的PaddlePaddle,可以在下面选择适合自己PaddlePaddle的版本,这里下载的是最新编译得到的,然后使用pip命令安装。 http://www.paddlepaddle.org/documentation/docs/zh/0.14.0/new_docs/beginners_guide/install/install_doc.html#id26 克隆PaddlePaddle下的models源码。 git clone https://github.com/PaddlePaddle/mod....

使用PaddlePaddle实现人脸对比和人脸识别 有更新!

前言 本文章我们来学习一下使用PaddlePaddle实现人脸对比和人脸识别,使用的训练数据集是CASIA-WebFace。 数据集介绍 我们使用的是CASIA-WebFace数据集,该人脸数据集是目前最大的公开人脸数据集。该人脸数据集一共有包含10,575个人,494,414张图像,包含彩色图和灰图。各大人脸数据集情况如下表。 DatasetSubjectsImagesAvailability LFW [1]5,74913,233Public WDRef [2]2,99599,773Public (feature only) CelebFaces [3]10,177202,599Private SFC [4]4,0304,400,000Private CACD [5]2,000163,446Public (partial annotated) CASIA-WebFace10,575494,414Public 训练模型 为了方便读取数据集,我们要生成一个图像列表,用于训练时读取数据,这个列表的作用具体可以阅读笔者之前的文章《我的PaddlePaddle学习之路》笔记四——自....

《我的PaddlePaddle学习之路》笔记十四——把PaddlePaddle迁移到Android设备上 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 PaddlePaddle还可以迁移到Android或者Linux设备上,在这些部署了PaddlePaddle的设备同样可以做深度学习的预测。在这篇文章中我们就介绍如何把PaddlePaddle迁移到Android手机上,并在Android的APP中使用PaddlePaddle。 编译PaddlePaddle库 使用Docker编译PaddlePaddle库 使用Docker编译PaddlePaddle真的会很方便,如果你对比了下面部分的使用Linux编译PaddlePaddle库,你就会发现使用Docker会少很多麻烦,比如安装一些依赖库等等。而且Docker是跨平台的,不管读者使用的是Windows,Linux,还是Mac,都可以使用Docker。以下操作方法都是在64位的Ubuntu 16.04上实现的。 首先安装Docker,在Ubuntu上安装很简单,只要一条命令就可以了 sudo apt install docker.io 安装完成之后,可以使用docker --version命令查看是.......

《我的PaddlePaddle学习之路》笔记十三——把PaddlePaddle部署到网站服务器上 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是PaddlePaddle的预测接口,获取到预测结果,返回给客户端。这个只是简单的流程,真实的复杂性远远不止这些,但是我们只需要了解这些,然后去搭建属于我们的图像识别接口。 环境 系统是:64位 Ubuntu 16.04 开发语言是:Python2.7 web框架是:flask 预测接口是:图像识别 flask的熟悉 安装flask 安装flask很简单,只要一条命令就可以了: pip install flask 同时我们也使用到flask_cors,所以我们也要安装这个库 pip install flask_cors 主要安装的是这两个库,如果还缺少哪些库,可以使用pip命令安装,*代表读者缺少的库: pip install * 测试fl....

《我的PaddlePaddle学习之路》笔记十二——可视化工具VisualDL的使用 有更新!

*本篇文章基于 PaddlePaddle 0.13.0、Python 2.7 前言 VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能。可以这样说:“所见即所得”。我们可以借助VisualDL来观察我们训练的情况,方便我们对训练的模型进行分析,改善模型的收敛情况。 之前我们使用的paddle.v2.plot接口,也可以观察训练的情况,但是只是支持CSOT的折线图而已。而VisualDL可以支持一下这个功能: scalar,趋势图,可用于训练测试误差的展示 image, 图片的可视化,可用于卷积层或者其他参数的图形化展示 histogram, 用于参数分布及变化趋势的展示 graph,用于训练模型结构的可视化 以上的图像来自VisualDL的Github 既然那么方便,那么我们就来尝试一下吧。VisualDL底层采用C++编写,但是它在提供C++ SDK的同时,也支持Python SDK,我们主要是使用Python的SDK。顺便说一下,VisualDL除了支持PaddlePaddle,之外,还支持pytorch,....

《我的PaddlePaddle学习之路》笔记十一——新版本Fluid的使用 有更新!

*本篇文章基于 PaddlePaddle 0.13.0、Python 2.7 *Fluid版本的使用可以学习笔者的新系列教程:《PaddlePaddle从入门到炼丹》 前言 PaddlePaddle的Fluid是0.11.0提出的,Fluid 是设计用来让用户像Pytorch和Tensorflow Eager Execution一样执行程序。在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述Operator图或者一系列层的符号描述,而是像通用程序那样描述训练或者预测的过程。而Fluid与PyTorch或Eager Execution的区别在于Fluid不依赖Python提供的控制流,例如 if-else-then或者for,而是提供了基于C++实现的控制流并暴露了对应的用with语法实现的Python接口。例如我们会在例子中使用到的代码片段: with fluid.program_guard(inference_program): test_accuracy = fluid.evaluator.Accuracy(input=out, label=label) test_ta.....