如何在keras中嵌入3d输入?
How to embed 3d input in keras?
我正在尝试在 Keras 中创建一个 Embedding
层。
我的输入大小是 3d:(batch, 8, 6)
,我想要最后一个维度的嵌入。
所以嵌入应该作为 (batch*8, 6)
-> embedding output
但我不想为所有学习步骤保留这个 batchsize
,只为嵌入层。
我认为解决方案之一是分离 8 个输入并将嵌入应用于每个输入。
但是这个embedding层和一个大embedding层不一样。
有什么可能的解决办法吗?谢谢!
解决方法很简单:
input_shape = (8,6)
并通过嵌入。你会得到你想要的。
一个完整的工作示例:
from keras.layers import *
from keras.models import *
ins = Input((8,6))
out = Embedding(10, 15)(ins)
model = Model(ins, out)
model.summary()
其中 10 是字典大小(单词或类似词的数量),15 是嵌入大小(结果维度)。
结果摘要:
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 8, 6) 0
_________________________________________________________________
embedding_1 (Embedding) (None, 8, 6, 15) 150
=================================================================
Total params: 150
Trainable params: 150
Non-trainable params: 0
_________________________________________________________________
我正在尝试在 Keras 中创建一个 Embedding
层。
我的输入大小是 3d:(batch, 8, 6)
,我想要最后一个维度的嵌入。
所以嵌入应该作为 (batch*8, 6)
-> embedding output
但我不想为所有学习步骤保留这个 batchsize
,只为嵌入层。
我认为解决方案之一是分离 8 个输入并将嵌入应用于每个输入。
但是这个embedding层和一个大embedding层不一样。
有什么可能的解决办法吗?谢谢!
解决方法很简单:
input_shape = (8,6)
并通过嵌入。你会得到你想要的。
一个完整的工作示例:
from keras.layers import *
from keras.models import *
ins = Input((8,6))
out = Embedding(10, 15)(ins)
model = Model(ins, out)
model.summary()
其中 10 是字典大小(单词或类似词的数量),15 是嵌入大小(结果维度)。
结果摘要:
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 8, 6) 0
_________________________________________________________________
embedding_1 (Embedding) (None, 8, 6, 15) 150
=================================================================
Total params: 150
Trainable params: 150
Non-trainable params: 0
_________________________________________________________________