Путать с параметром 'tokens_length' модели elmo в тензорном узле

Я ищу модель ELMo в тензорном центре и мне не очень понятно, что означает tokens_length = [6, 5] в примере использования потока: ( https://tfhub.dev/google/elmo/2)

elmo = hub.Module("https://tfhub.dev/google/elmo/2", trainable=True)
tokens_input = [["the", "cat", "is", "on", "the", "mat"],
                ["dogs", "are", "in", "the", "fog", ""]]
tokens_length = [6, 5]
embeddings = elmo(
    inputs={
        "tokens": tokens_input,
        "sequence_len": tokens_length
    },
    signature="tokens",
    as_dict=True)["elmo"]

Не нравится максимальная длина входного предложения токена, не нравится [максимальное количество слов для каждого предложения, количество предложений], что меня смущает. Может кто-нибудь объяснить это? Спасибо!

1 ответ

Решение

Первый пример имеет длину 6 а второй пример имеет длину 5:. т.е.

"кот на ковре" - это 6 слов, а "собаки в тумане" - всего 5 слов. Дополнительная пустая строка во входных данных добавляет небольшую путаницу:-/

Если вы читаете документы на этой странице, это объясняет, почему это необходимо (жирный шрифт - мой)

С подписью токенов модуль принимает предложения токенов в качестве входных данных. Входной тензор - это тензор строки с формой [batch_size, max_length] и тензором int32 с формой [batch_size], соответствующей длине предложения. Ввод длины необходим, чтобы исключить заполнение в случае предложений различной длины.

Другие вопросы по тегам