我有一个简单的机器翻译模型,可以将英语句子转换为法语句子.我想首先使用英文句子维度传递模型编码器.在被解码器翻译后,模型输出具有法语句子维度.这里的问题是英语句子,填充后法语句子的长度不同.如何在我的编码器和解码器之间进行重塑?
这是我的代码:
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
Run Code Online (Sandbox Code Playgroud)
结果模型参数如下所示:
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
_________________________________________________________________
Run Code Online (Sandbox Code Playgroud)
对于输入维度(15,1),我想将输出维度更改为(17,1)
在此先感谢您的帮助.
\n\n\n我认为通过将 input_seq 传递给编码器意味着完整的句子。
\n
您正在传递完整的句子,GRU一次会收到一个单词,并且会roll-out收到序列中的单词数。
让我们举个例子,你的输入是一个类似的句子This is awesome platform, to share knowledge.,它的语言翻译Hindi是\xe0\xa4\xaf\xe0\xa4\xb9 \xe0\xa4\x9c\xe0\xa5\x8d\xe0\xa4\x9e\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\x9d\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa4 \xe0\xa4\xac\xe0\xa4\xa2\xe0\xa4\xbc\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\x9a \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa5\xa4。现在,这里的last单词 inHindi对应于2nd单词 in english,last单词 inenglish对应于2nd单词 in english(以某种方式)等等。
我的观点是,当您input向 发送一个单词时encoder,会有一些与其对应的特征,这些特征会转到decoder,其中包含有关所有先前单词的信息。现在它的输出将仅取决于它所看到的那些单词。
另外,如果当前步骤之前的序列中的任何单词是错误的,则显然(解码器的)完整句子将是错误的,因为它还没有看到完整的句子。
\n\n一种选择是将完整序列编码为压缩信息,然后允许decoder解码来自 的信息hidden-compact info。这是使用此方法的一个很好解释的示例。
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |