嵌入Keras

嵌入Keras,keras,nlp,data-science,word-embedding,Keras,Nlp,Data Science,Word Embedding,哪种算法用于嵌入Keras内置函数? Word2vec?手套其他的 以上都没有。默认情况下,它是随机初始化的embeddings\u initializer='uniform' 关于如何使用现有的嵌入有很多问题。简短的回答是两者都不。本质上,像手套的Word2Vec这样的嵌入层只是一个小的神经网络模块(通常是完全连接的层),它将更高的稀疏维度投射到更低的n维向量中 当你在Keras中插入一个新的随机嵌入层到你的神经网络中时,Keras将构造一个形状密集的可学习矩阵[输入、输出] 具体地说,假设您

哪种算法用于嵌入Keras内置函数? Word2vec?手套其他的


以上都没有。默认情况下,它是随机初始化的
embeddings\u initializer='uniform'


关于如何使用现有的嵌入有很多问题。

简短的回答是两者都不。本质上,像手套的Word2Vec这样的嵌入层只是一个小的神经网络模块(通常是完全连接的层),它将更高的稀疏维度投射到更低的n维向量中

当你在Keras中插入一个新的随机嵌入层到你的神经网络中时,Keras将构造一个形状密集的可学习矩阵
[输入、输出]

具体地说,假设您正在插入一个嵌入层,将整数标量月份信息(12个唯一值)编码到一个大小为3的浮点向量中。在Keras中,您将声明您的嵌入,如下所示:

import numpy as np
import keras
from keras.models import Sequential, Model
from keras.layers import Embedding, Input
x = Input(shape=(1000,)) # suppose seq_len=1000
embedding = Embedding(12+1, 3, input_length=1000)(x)
model = Model(inputs=x, outputs= embedding) # Functional API
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 1000)              0         
_________________________________________________________________
embedding_1 (Embedding)      (None, 1000, 3)           39        
=================================================================
Total params: 39
Trainable params: 39
Non-trainable params: 0
_________________________________________________________________
您的嵌入层将有如下摘要:

import numpy as np
import keras
from keras.models import Sequential, Model
from keras.layers import Embedding, Input
x = Input(shape=(1000,)) # suppose seq_len=1000
embedding = Embedding(12+1, 3, input_length=1000)(x)
model = Model(inputs=x, outputs= embedding) # Functional API
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 1000)              0         
_________________________________________________________________
embedding_1 (Embedding)      (None, 1000, 3)           39        
=================================================================
Total params: 39
Trainable params: 39
Non-trainable params: 0
_________________________________________________________________
请注意,可学习的参数是
39=13*3
(Keras需要+1来编码不属于12个唯一月份中任何一个的值,以防万一)

还请注意,虽然嵌入的输入形状是成形的
(无,1000)
,但嵌入的输出是成形的
(无,1000,3)
。这意味着大小为
[13,3]
的非常小的密集权重矩阵应用于1000个输入时间步长中的每个。这意味着,
0-11
的每个月整数输入将转换为大小为
(3,)
的浮点向量

这也意味着,当您从最后一层反向传播到嵌入层时,到1000个时间步嵌入输出中的每一个的梯度也将(以
时间分布
的方式)流向
[13,3]
大小的小神经网络权重(本质上是嵌入层)


关于嵌入层,请参阅官方Keras文档:。

因此,此嵌入没有任何意义?是的,默认情况下,它将是一致的随机值。嵌入没有任何意义,是否意味着它没有用处?手套不是神经网络,它被设置为线性最小二乘回归问题。