首页 > 解决方案 > 在 Keras 模型中重塑编码器解码器

问题描述

我有一个简单的机器翻译模型,可以将英语句子转换为法语句子。我想先传入带有英文句子维度的模型编码器。经解码器翻译后,用法语句子维度建模输出。这里的问题是英语句子和法语句子在填充后的长度不同。如何在编码器和解码器之间进行重塑?

这是我的代码:

def encdec_model(input_shape, output_sequence_length, english_vocab_size, french_vocab_size):

    learning_rate = 1e-3

    input_seq = Input(input_shape[1:])
    encoder = GRU(64, return_sequences=True)(input_seq)
    decoder = GRU(64, return_sequences=True)(encoder)
    logits = TimeDistributed(Dense(french_vocab_size))(decoder)
    model = Model(input_seq, Activation('softmax')(logits))

    model.compile(loss=sparse_categorical_crossentropy,
                optimizer=Adam(learning_rate),
                metrics=['accuracy'])    

return model

生成的模型参数如下所示:

Layer (type)                 Output Shape              Param #   
_________________________________________________________________
input_13 (InputLayer)        (None, 15, 1)             0         
_________________________________________________________________
gru_16 (GRU)                 (None, 15, 64)            12672     
_________________________________________________________________
gru_17 (GRU)                 (None, 15, 64)            24768     
_________________________________________________________________
time_distributed_10 (TimeDis (None, 15, 344)           22360     
_________________________________________________________________
activation_10 (Activation)   (None, 15, 344)           0     
_________________________________________________________________

使用输入维度(15,1),我想将输出维度更改为(17,1)

提前感谢您的帮助。

标签: pythonkeras

解决方案



推荐阅读