Skip to content
This repository has been archived by the owner on Mar 3, 2024. It is now read-only.

Latest commit

 

History

History
96 lines (76 loc) · 2.3 KB

README.zh-CN.md

File metadata and controls

96 lines (76 loc) · 2.3 KB

Keras Position Embedding

Version

[中文|English]

位置嵌入层。

安装

pip install keras-pos-embd

使用

可训练位置嵌入

基本使用方法和嵌入层一致,模式使用PositionEmbedding.MODE_EXPAND

from tensorflow import keras
from keras_pos_embd import PositionEmbedding

model = keras.models.Sequential()
model.add(PositionEmbedding(
    input_shape=(None,),
    input_dim=10,     # 最大的位置的绝对值
    output_dim=2,     # 嵌入的维度
    mask_zero=10000,  # 作为padding的位置下标(因为0被占用了)
    mode=PositionEmbedding.MODE_EXPAND,
))
model.compile('adam', 'mse')
model.summary()

如果跟在嵌入层使用,则不需要设置mask_zero。嵌入特征与位置嵌入相加使用PositionEmbedding.MODE_ADD模式,相连使用PositionEmbedding.MODE_CONCAT模式:

from tensorflow import keras
from keras_pos_embd import PositionEmbedding

model = keras.models.Sequential()
model.add(keras.layers.Embedding(
    input_shape=(None,),
    input_dim=10,
    output_dim=5,
    mask_zero=True,
))
model.add(PositionEmbedding(
    input_dim=100,
    output_dim=5,
    mode=PositionEmbedding.MODE_ADD,
))
model.compile('adam', 'mse')
model.summary()

三角函数嵌入

三角函数嵌入没有可训练权重,使用方法和PositionEmbedding相同,不需要输入的维度:

from tensorflow import keras
from keras_pos_embd import TrigPosEmbedding

model = keras.models.Sequential()
model.add(TrigPosEmbedding(
    input_shape=(None,),
    output_dim=30,
    mode=TrigPosEmbedding.MODE_EXPAND,
))
model.compile('adam', 'mse')
model.summary()

相加模式:

from tensorflow import keras
from keras_pos_embd import TrigPosEmbedding

model = keras.models.Sequential()
model.add(keras.layers.Embedding(
    input_shape=(None,),
    input_dim=10,
    output_dim=5,
    mask_zero=True,
))
model.add(TrigPosEmbedding(
    output_dim=5,
    mode=TrigPosEmbedding.MODE_ADD,
))
model.compile('adam', 'mse')
model.summary()