1、Embedding层理解

高维稀疏特征向量到低维稠密特征向量的转换;嵌入层将正整数(下标)转换为具有固定大小的向量;把一个one hot向量变为一个稠密向量

参考:https://zhuanlan.zhihu.com/p/52787964

Embedding 字面理解是 “嵌入”,实质是一种映射,从语义空间到向量空间的映射,同时尽可能在向量空间保持原样本在语义空间的关系,如语义接近的两个词汇在向量空间中的位置也比较接近。

应用:

在深度学习推荐系统中,Embedding主要的三个应用方向:

1、在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换;

2、作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;

3、通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。

代码简单说明

keras Embedding接口:
参考:https://keras.io/zh/layers/embeddings/
input_dim 一般大于等于词表数

Embedding(4, 3, input_length=5) :
1)4是词表去重后的总数量,例如这里np.array([[0,1,2,1,1],[0,1,2,1,3]])共0、1、2、3四个数字,所以词表数为4
2)3是输出单个词向量维度
3)5是input_length输入的长度np.array([[0,1,2,1,1],[0,1,2,1,3]])中[0,1,2,1,1]长度为5

from keras.models import Sequential
from keras.layers import Flatten, Dense, Embedding
import numpy as npmodel = Sequential()
model.add(Embedding(4, 3, input_length=5))  model.compile('rmsprop', 'mse')
data = np.array([[0,1,2,1,1],[0,1,2,1,3]])res1 = model.predict(data)
res1
print(model.input_shape)
print(model.output_shape)
'''
(None, 5) #其中 None的取值是batch_size
(None, 5, 3)input_shape:函数输入,尺寸为(batch_size, 5)的2D张量(矩阵的意思)
output_shape:函数输出,尺寸为(batch_size, 5,3)的3D张量
'''

特别说明:

1)Embedding(4, 3, input_length=5) 会随机初始化一个词表大小的4*3维矩阵
2)data = np.array([[0,1,2,1,1],[0,1,2,1,3]])里的0、1、2、3、4获取上面词表里对应取数,比如0会去取上面标记数字0行,其他类似;如果有小数点会直接取整2.3、2.9都是取2然后去取上面标记数字2行
3)这些随机初始化的Embedding作为神经网络输入会随着网络的训练而变化

再深入理解

参考:https://spaces.ac.cn/archives/4122
字向量就是one hot的全连接层的参数;下2图红线的参数就是对应的参数权重

2、 Embedding层中使用 预训练词向量

weights=[embeddings_matrix], # 重点:预训练的词向量系数
trainable=False # 是否在 训练的过程中 更新词向量

from keras.layers import EmbeddingEMBEDDING_DIM = 100 #词向量维度embedding_layer = Embedding(input_dim = len(embeddings_matrix), # 字典长度EMBEDDING_DIM, # 词向量 长度(100)weights=[embeddings_matrix], # 重点:预训练的词向量系数input_length=MAX_SEQUENCE_LENGTH, # 每句话的 最大长度(必须padding) trainable=False # 是否在 训练的过程中 更新词向量)

其实就是给赋值下one hot全连接边的权重就是字向量的embedding;后续还是对应查表取值,后续训练也可以自定义权重是否被训练更新

pytorch Embedding 预训练向量加载

import torchweight = torch.FloatTensor([[1, 2.3, 3], [4, 5.1, 6.3]])
embedding = torch.nn.Embedding.from_pretrained(weight)# Get embeddings for index 1
input = torch.LongTensor([1])  ##表示取表第二个,即结果[4, 5.1, 6.3]
embedding(input)

神经网络 Embedding层理解; Embedding层中使用预训练词向量相关推荐

  1. PyTorch在NLP任务中使用预训练词向量

    在使用pytorch或tensorflow等神经网络框架进行nlp任务的处理时,可以通过对应的Embedding层做词向量的处理,更多的时候,使用预训练好的词向量会带来更优的性能.下面分别介绍使用ge ...

  2. word2vec预训练词向量+通俗理解word2vec+CountVectorizer+TfidfVectorizer+tf-idf公式及sklearn中TfidfVectorizer

    文章目录 文分类实(一) word2vec预训练词向量 2 数据集 3 数据预处理 4 预训练word2vec模型 canci 通俗理解word2vec 独热编码 word2vec (Continuo ...

  3. Python Djang 搭建自动词性标注网站(基于Keras框架和维基百科中文预训练词向量Word2vec模型,分别实现由GRU、LSTM、RNN神经网络组成的词性标注模型)

    引言 本文基于Keras框架和维基百科中文预训练词向量Word2vec模型,分别实现由GRU.LSTM.RNN神经网络组成的词性标注模型,并且将模型封装,使用python Django web框架搭建 ...

  4. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

  5. 使用Chinese-Word-Vectors作为pytorch中的预训练向量

    如何在深度学习中使用开源Chinese Word Vectors 摘要:Chinese-Word-Vectors开源项目提供了100多种预训练模型,但在深度学习中使用时,加载预训练向量存在词表重复项问 ...

  6. 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

    本文可以任意转载,转载时请标明作者和出处. 张俊林 2018-11-11 (如果图片浏览有问题可以转至:知乎版本) Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高 ...

  7. keras 生成句子向量 词向量_Keras中使用TensorBoard可视化词向量

    1. 前言 最近几天都耗在了词向量的训练以及可视化上,期间遇到了一些坑,也了解到一些容易忽略的知识点,在此一并记录下来,给自己也给大家一个警示. 2. keras中的TensorBoard Tenso ...

  8. BERT面向语言理解的深度双向变换预训练

    https://www.toutiao.com/a6648267891932135949/ 2019-01-20 02:04:22 BERT: Pre-training of Deep Bidirec ...

  9. 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练

    摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...

最新文章

  1. Linux CentOS服务启动
  2. 图论--SCC强连通缩点--Tarjan
  3. ARM MMU工作原理剖析[转]
  4. Google Maps 地址转化成坐标
  5. “黑天鹅”,正在改变 AI 落地医疗领域的加速度
  6. 运行Java程序时 Tomcat出错 显示端口被占用
  7. python中datetime库_一天掌握一个Python库--datetime库
  8. Android 功耗(12)---如何查找待机唤醒源
  9. 百万数据php7取出循环_用php处理百万级以上的数据
  10. 以下属于单例模式的优点的是_单例模式的优缺点和使用场景
  11. c语言贪吃蛇最简单代码_让我们跑一个最简单的GAN网络吧!(附Jupyter Notebook 代码)...
  12. python: excel单元格读取写入
  13. data layui table 排序_具有排序、筛选、分组、虚拟化、编辑功能的React表格组件...
  14. java压缩图片工具类Thumbnailator
  15. mcrpg职业系统服务器,我的世界MC-梦想大陆RPG服务器1.7.10
  16. Excel自动化教程之通过python将Excel与Word集成无缝生成自动报告
  17. HTML5学堂,感谢您一年的陪伴(上)
  18. Fiddler抓包工具常见功能介绍,还不会的进来看
  19. Java 内部类之匿名内部类
  20. 如何成为技术大神(文末有抽奖)

热门文章

  1. 海南岛1/7陆域面积开展热带雨林国家公园体制试点
  2. Datawhale打卡活动 Kaggle Spaceship Titanic Day4
  3. 动态注册(servlet、filter、listener)
  4. 华为mate10科学计算机,手机替代电脑为时过早?看华为Mate 10教你轻办公
  5. Python3 OpenCV4 计算机视觉学习手册:1~5
  6. 2020A证(安全员)模拟考试系统及A证(安全员)实操考试视频
  7. Linux下搭建rabbitMQ、安装jdk、安装redis、安装zookeeper、docker安装MySQL、防火墙常用命令、docker安装、Windows下嘛呢私服搭建、Nginx安装
  8. python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)...
  9. 一个困扰许久的Word嵌入文档问题(求助)
  10. Java对象与XML、Excel、TXT文件相互转换