【paddle深度学习高层API七日打卡营】三岁水课第五天——新春对联

简介: 【paddle深度学习高层API七日打卡营】三岁水课第五天——新春对联

大家好,这里是三岁,别的不会,擅长白话,今天就是我们的白话系列,内容是paddle2.0新出的高程API,在这里的七日打卡营0基础学习,emmm我这个负基础的也来凑凑热闹,那么就开始吧~~~~

注:以下白话内容为个人理解,如有不同看法和观点及不对的地方欢迎大家批评指正!


课程传送门


基本概念



20210208132631111.png


课程目标



20210208132743518.png


文本生成任务



20210208132837957.png


seq2seq



数据经过编码器编码然后到解码器进行解码最后得到以后输出


在里面是一个位置一个位置输出,而不是一起一次性输出

然后他可以将任意长度的原序列转换成另一个任意长度的目标序列

里面编码器和解码器基本上用的是RNN的单元


20210208132942580.png


编码器和解码器的缺点就是无法充分利用输入序列的信息这个时候就会引入一个新的机制——attention


20210208133539207.png


attention机制(权重)



20210208134119994.png



20210208134427100.png


数据处理


  • 输入一个数据:进行切词然后对照着我们的词汇表对每个词的ID进行查找(ID相当于我们的身份证号码是词汇的唯一标识)
  • 然后利用数组把这句话进行表示(表示的方式:词汇表的长度在id位置处显示为1其他均为0)也就是这个数组的大小为句子的长度 * 词汇表的长度
  • 数组和已经准备好的字典(这个需要通过其他方式进行学习)进行乘积得到一个新的表示数值
  • 一定数量的文本组成一个三维的数据去共同进行处理
  • 三维数据经过LSTM得到了一个降维以后的词向量


image.png


长短时记忆网络(LSTM)


20210208142220359.png


nn.LSTM的输出


该网络逐个词进行输入,前一个时刻输入的内容会对下一个时刻产生一定的影响,这样子可以对一些比较长的句子进行解析,内部也存在一定的记忆


20210208142514265.png


里面X是输入:是一个随机函数,作用:随机初始化一个(128,20,64)的矩阵


128:128个样本同时处理

20:统一的长度20

64:词向量的维度是64

rnn_madelpaddle.nn.LSTM()初始化的一个结果

然后把x输入网络rnn_madel得到y(h,c)h,c分别代表网络里面的记忆信号和输出信号。y是每个时刻的输出信号


20210208143037391.png


注意力机制(Attention)



逐个输入数据在编码和解码的同时通过训练会得到一个权重,那个词语比较重要最后的权重也会进行一个偏移,整个过程中会更加重视这个词的内容以及对后面的影响。


20210208144802475.png

20210208150718602.png


项目实战



数据


20210208152917961.png20210208152932792.png


通过paddlenlp.datasets.CoupletDataset.get_datasets()对数据进行读取


train_ds, dev_ds, test_ds = CoupletDataset.get_datasets(['train', 'dev', 'test'])


# 查看代码读取情况
print (len(train_ds), len(test_ds), len(dev_ds))
for i in range(5):
    print (train_ds[i])
print ('\n')
for i in range(5):
    print (test_ds[i])


数据样本一共是702594,999,10000

下面的数据是词汇ID然后以1为开头2为结尾


20210208153346199.png


通过CoupletDataset.get_vocab来获取词汇表

vocab.idx_to_token来表示起始符和结束符


vocab, _ = CoupletDataset.get_vocab()
trg_idx2word = vocab.idx_to_token
vocab_size = len(vocab)
pad_id = vocab[CoupletDataset.EOS_TOKEN]
bos_id = vocab[CoupletDataset.BOS_TOKEN]
eos_id = vocab[CoupletDataset.EOS_TOKEN]
print (pad_id, bos_id, eos_id)


构造dataloder


20210208153928342.png

20210208154410110.png


模型



202102081543532.png

20210208154456255.png


class Seq2SeqEncoder(nn.Layer):
    def __init__(self, vocab_size, embed_dim, hidden_size, num_layers):
        super(Seq2SeqEncoder, self).__init__()
        self.embedder = nn.Embedding(vocab_size, embed_dim)  # 完成查表,得到字词的向量
        self.lstm = nn.LSTM(  # 把数据输入LSTM得到句子的语义表示
            input_size=embed_dim,
            hidden_size=hidden_size,
            num_layers=num_layers,
            dropout=0.2 if num_layers > 1 else 0.)
    def forward(self, sequence, sequence_length):
        inputs = self.embedder(sequence)
        encoder_output, encoder_state = self.lstm(
            inputs, sequence_length=sequence_length)
        # encoder_output [128, 18, 256]  [batch_size,time_steps,hidden_size]
        # encoder_state (tuple) - 最终状态,一个包含h和c的元组。 [2, 128, 256] [2, 128, 256] [num_lauers * num_directions, batch_size, hidden_size]
        return encoder_output, encoder_state


定义AttentionLayer


20210208154755397.png


定义Seq2SeqDecoderCell


20210208160238190.png


总结



20210208160211440.png

课程已经结束人已经懵了,继续学习吧!

目录
相关文章
|
6月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
8月前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
机器学习/深度学习 JSON 缓存
flask部署深度学习api接口
flask部署深度学习api接口
11609 3
Paddle 1.8 与 Paddle 2.0 API 映射表
本文档基于 Paddle 1.8 梳理了常用 API 与 Paddle 2.0 对应关系。你可以根据对应关系,快速熟悉 Paddle 2.0 的接口使用。
112 0
|
机器学习/深度学习 数据可视化 API
【paddle深度学习高层API七日打卡营】大作业解析——三岁无良版本
【paddle深度学习高层API七日打卡营】大作业解析——三岁无良版本
189 0
|
1天前
|
JSON API 数据格式
京东商品SKU价格接口(Jd.item_get)丨京东API接口指南
京东商品SKU价格接口(Jd.item_get)是京东开放平台提供的API,用于获取商品详细信息及价格。开发者需先注册账号、申请权限并获取密钥,随后通过HTTP请求调用API,传入商品ID等参数,返回JSON格式的商品信息,包括价格、原价等。接口支持GET/POST方式,适用于Python等语言的开发环境。
27 11
|
25天前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
72 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
12天前
|
JSON 安全 API
淘宝商品详情API接口(item get pro接口概述)
淘宝商品详情API接口旨在帮助开发者获取淘宝商品的详细信息,包括商品标题、描述、价格、库存、销量、评价等。这些信息对于电商企业而言具有极高的价值,可用于商品信息展示、市场分析、价格比较等多种应用场景。
|
20天前
|
前端开发 API 数据库
Next 编写接口api
Next 编写接口api
|
26天前
|
XML JSON 缓存
阿里巴巴商品详情数据接口(alibaba.item_get) 丨阿里巴巴 API 实时接口指南
阿里巴巴商品详情数据接口(alibaba.item_get)允许商家通过API获取商品的详细信息,包括标题、描述、价格、销量、评价等。主要参数为商品ID(num_iid),支持多种返回数据格式,如json、xml等,便于开发者根据需求选择。使用前需注册并获得App Key与App Secret,注意遵守使用规范。