在keras中实现的自适应softmax
keras-adaptive-softmax的Python项目详细描述
Keras自适应Softmax
安装
pip install keras-adaptive-softmax
用法
通常,AdaptiveEmbedding
和AdaptiveSoftmax
应该一起使用AdaptiveEmbedding
提供可变长度的嵌入,而AdaptiveSoftmax
计算输出和生成的嵌入之间的相似性。
importkerasfromkeras_adaptive_softmaximportAdaptiveEmbedding,AdaptiveSoftmaxinput_layer=keras.layers.Input(shape=(None,))embed_layer=AdaptiveEmbedding(input_dim=30,output_dim=32,cutoffs=[5,15,25],div_val=2,return_embeddings=True,return_projections=True,mask_zero=True,)(input_layer)dense_layer=keras.layers.Dense(units=32,activation='tanh',)(embed_layer[0])softmax_layer=AdaptiveSoftmax(input_dim=32,output_dim=30,cutoffs=[5,15,25],div_val=2,bind_embeddings=True,bind_projections=True,)([dense_layer]+embed_layer[1:])model=keras.models.Model(inputs=input_layer,outputs=softmax_layer)model.compile('adam','sparse_categorical_crossentropy')model.summary()
cutoffs
和div_val
控制每个令牌的嵌入长度。假设我们有30个不同的标记,在上面的示例中:
- 前5个令牌的嵌入长度为32
- 接下来10个令牌的嵌入长度是16
- 接下来10个令牌的嵌入长度为8
- 最后5个令牌的嵌入长度是4