gpt4 book ai didi

python - 两个序列到序列模型keras之间的区别(有和没有RepeatVector)

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:29 25 4
gpt4 key购买 nike

我试图了解这个模型描述之间的区别here , 下面一个:

from keras.layers import Input, LSTM, RepeatVector
from keras.models import Model

inputs = Input(shape=(timesteps, input_dim))
encoded = LSTM(latent_dim)(inputs)

decoded = RepeatVector(timesteps)(encoded)
decoded = LSTM(input_dim, return_sequences=True)(decoded)

sequence_autoencoder = Model(inputs, decoded)
encoder = Model(inputs, encoded)

这里描述的序列到序列模型是 second describion

有什么区别?第一个有 RepeatVector 而第二个没有?第一个模型是否没有将解码器隐藏状态作为预测的初始状态?

是否有描述第一个和第二个的论文?

最佳答案

在使用 RepeatVector 的模型中,他们没有使用任何类型的花哨预测,也没有处理状态。他们让模型在内部做所有事情,RepeatVector 用于将 (batch, latent_dim) 向量(不是序列)转换为 ( batch, timesteps, latent_dim)(现在是一个正确的序列)。

现在,在另一个没有 RepeatVector 的模型中, secret 就在于这个附加函数:

def decode_sequence(input_seq):
# Encode the input as state vectors.
states_value = encoder_model.predict(input_seq)

# Generate empty target sequence of length 1.
target_seq = np.zeros((1, 1, num_decoder_tokens))
# Populate the first character of target sequence with the start character.
target_seq[0, 0, target_token_index['\t']] = 1.

# Sampling loop for a batch of sequences
# (to simplify, here we assume a batch of size 1).
stop_condition = False
decoded_sentence = ''
while not stop_condition:
output_tokens, h, c = decoder_model.predict([target_seq] + states_value)

# Sample a token
sampled_token_index = np.argmax(output_tokens[0, -1, :])
sampled_char = reverse_target_char_index[sampled_token_index]
decoded_sentence += sampled_char

# Exit condition: either hit max length
# or find stop character.
if (sampled_char == '\n' or len(decoded_sentence) > max_decoder_seq_length):
stop_condition = True

# Update the target sequence (of length 1).
target_seq = np.zeros((1, 1, num_decoder_tokens))
target_seq[0, 0, sampled_token_index] = 1.

# Update states
states_value = [h, c]

return decoded_sentence

这将运行一个基于 stop_condition 的“循环”,用于一个接一个地创建时间步长。 (这样做的好处是造句没有固定长度)。

它还明确获取每个步骤中生成的状态(以保持每个步骤之间的正确连接)。


简而言之:

  • 模型 1:通过重复潜在向量创建长度
  • 模型 2:通过循环新步骤直到达到停止条件来创建长度

关于python - 两个序列到序列模型keras之间的区别(有和没有RepeatVector),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com