在PaddlePaddle中embedding层和fc层的区别在哪里?

  • 关键字:embedding 全连接层

  • 问题描述:在使用PaddlePaddle实现词向量相关任务时,参考了官方词向量相关的代码,里面使用了很多embedding层与fc层链接使用的结构,请问embedding层与fc层具有有什么区别?

  • 相关代码:

 embed_fourth = fluid.layers.embedding(
        input=fourth_word,
        size=[dict_size, EMBED_SIZE],
        dtype='float32',
        is_sparse=is_sparse,
        param_attr='shared_w')

    # 此函数沿着提到的轴连接输入并将其作为输出返回,即沿axis方向连接
    # 将输入的词连接成一层
    concat_embed = fluid.layers.concat(
        input=[embed_first,
               embed_second,
               embed_third,
               embed_fourth],axis=1)
    #隐藏层,全连接
    hidden1 = fluid.layers.fc(input=concat_embed,
                              size=HIDDEN_SIZE,
                              act='sigmoid')
  • 问题解答:
    简单而言,embeding层可以理解为从一个矩阵中选择一行,一行对应着一个离散的新的特征表达,是一种取词操作,而fc层,即全连接层,它的实质是矩阵乘法。一些用户会将embeding看成一种训练的结果,这是不对的,embedding 层仅仅就只是完成“取矩阵的一行”这样的操作,而获得的结果是构建词向量的神经网络在训练时更新模型参数的结果。

  • 问题研究:
    embeding层与全连接层虽然在作用上有明显的不同,但两层训练的方式是完全相同的,都是通过反向传播算法获得梯度,通过梯度下降算法进行相应参数的更新,只是embeding的目的就是这些更新后的参数,这些参数组成的矩阵就是训练后要获得的词向量,而全连接层的参数就只是参数,某种程度反应了训练数据的特征。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值