百度飞桨深度学习集训营-NLP+推荐系统-学习心得

本文记录了作者在百度飞桨深度学习集训营的学习心得,主要涉及NLP和推荐系统。课程讲解了词向量、NLP常见任务以及深度学习推荐算法的构建,强调了飞桨平台在实际应用中的价值,帮助理解深度学习的落地思路。
摘要由CSDN通过智能技术生成

好好学习!天天SOTA!

进入第二阶段课程了,首先也激励下自己坚持到了第二阶段。第二阶段为NLP(自然语言处理)+推荐系统的课程。由周湘阳老师讲解NLP,由毕然老师讲解推荐系统,都是百度资深大咖级工程师。NLP从自然语言处理的发展历程开始引入,很有意思的介绍了其发展经历的几个时期。同时也介绍了自然语言处理的常见任务,例如人机对话、阅读理解、文本分类及相似度等。重点讲解了词向量(word2vec)在这里插入图片描述
,即把自然语言计算转换为向量计算。详细说明了词向量模型转换的两个问题:1、如何把词转换为向量?,2、如何让向量具有语义信息?,着重分析CBOW和Skip-gram的算法实现在这里插入图片描述
,并用飞桨进行快捷实现。实例讲解使用paddlepaddle飞桨实现自然语言情感分析和文本匹配这两类最常用的自然语言处理任务。

使用飞桨定义一个长短时记忆模型:

import paddle.fluid as fluid
#使用飞桨实现一个长短时记忆模型
class SimpleLSTMRNN(fluid.Layer):
    
    def __init__(self,
                 hidden_size,
                 num_steps,
                 num_layers=1,
                 init_scale=0.1,
                 dropout=None):
        
        #这个模型有几个参数:
        #1. hidden_size,表示embedding-size,或者是记忆向量的维度
        #2. num_steps,表示这个长短时记忆网络,最多可以考虑多长的时间序列
        #3. num_layers,表示这个长短时记忆网络内部有多少层,我们知道,
        #   给定一个形状为[batch_size, seq_len, embedding_size]的输入,
        # 长短时记忆网络会输出一个同样为[batch_size, seq_len, embedding_size]的输出,
        #   我们可以把这个输出再链到一个新的长短时记忆网络上
        # 如此叠加多层长短时记忆网络,有助于学习更复杂的句子甚至是篇章。
        #5. init_scale,表示网络内部的参数的初始化范围,
        # 长短时记忆网络内部用了很多tanh,sigmoid等激活函数,这些函数对数值精度非常敏感,
        # 因此我们一般只使用比较小的初始化范围,以保证效果,
        
        super(SimpleLSTMRNN, self).__init__()
        self._hidden_size = hidden_size
        self._num_layers = num_layers
        self._init_scale = init_scale
        self._dropout = dropout
        self._input = None
        self._num_steps = num_steps
        self.cell_array = []
        self.hidden_array = []

        # weight_1_arr用于存储不同层的长短时记忆网络中,不同门的W参数
        self.weight_1_arr = []
        self.weight_2_arr = []
        # bias_arr用于存储不同层的长短时记忆网络中,不同门的b参数
        self.bias_arr = []
        self.mask_array = []

        # 通过使用create_parameter函数,创建不同长短时记忆网络层中的参数
        # 通过上面的公式,我们知道,我们总共需要8个形状为[_hidden_size, _hidden_size]的W向量
        # 和4个形状为[_hidden_size]的b向量,因此,我们在声明参数的时候,
        # 一次性声明一个大小为[self._hidden_size * 2, self._hidden_size * 4]的参数
        # 和一个 大小为[self._hidden_size * 4]的参数,这样做的好处是,
        # 可以使用一次矩阵计算,同时计算8个不同的矩阵乘法
        # 以便加快计算速度
        for i in range(self._num_layers):
            weight_1 = self.create_parameter(
                attr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值