Тензор принимается как int, AttributeError: объект 'int' не имеет атрибута 'decode' ⇐ Python
Тензор принимается как int, AttributeError: объект 'int' не имеет атрибута 'decode'
Я работаю над специализацией Coursera по глубокому обучению, и мой код проходит все примеры, но на модульном тесте я постоянно получаю неправильный ответ
вот вопрос. Упражнение 3. Реализация функции ответа на вопрос Реализуйте функцию ответ_вопрос. Вот шаги: Настройка вопроса: Токенизировать данный вопрос, используя предоставленный токенизатор. Добавьте к тензору дополнительное измерение для совместимости. Дополните тензор вопроса, используя Pad_sequences, чтобы гарантировать, что последовательность имеет указанную максимальную длину. Эта функция усекает последовательность, если она больше, или дополняет нулями, если она короче. Настройка ответа: Токенизируйте первоначальный ответ, отметив, что все ответы начинаются со строки «ответ:». Добавьте к тензору дополнительное измерение для совместимости. Получите идентификатор токена EOS, обычно представленный цифрой 1. Сгенерировать ответ: Цикл для итераций decoder_maxlen. Используйте функцию Transformer_utils.next_word, которая прогнозирует следующий токен в ответе, используя модель, входной документ и текущее состояние вывода. Объедините предсказанное следующее слово с выходным тензором. Условие остановки: Генерация текста прекращается, если модель прогнозирует токен EOS. Если токен EOS предсказан, выйдите из цикла. вот мой код
def answer_question(вопрос, модель, токенизатор, encoder_maxlen=150, decoder_maxlen=50): # Токенизировать вопрос tokenized_question = tokenizer.tokenize(вопрос) tokenized_question = tf.expand_dims(tokenized_question, 0) Padded_question = Pad_sequences (tokenized_question, maxlen = encoder_maxlen, дополнение = 'post', truncating = 'post') # Токенизировать начальную часть ответа с помощью "ответ: " tokenized_answer = tokenizer.tokenize("ответ:") токенизированный_ответ = tf.expand_dims(токенизированный_ответ, 0) # Получите идентификатор токена EOS eos = tokenizer.string_to_id("") # Генерируем ответ для меня в диапазоне (decoder_maxlen): next_word_id = Transformer_utils.next_word(дополненный_вопрос, токенизированный_ответ, модель) # Убедитесь, что next_word_id не является скаляром если не isinstance(next_word_id, tf.Tensor): поднять TypeError("Ожидал, что next_word_id будет тензором, получен тип: {}".format(type(next_word_id))) # Объединить предсказанный идентификатор следующего слова токенизированный_ответ = tf.concat([токенизированный_ответ, next_word_id], ось=-1) # Прерывание, если предсказан токен EOS если eos в next_word_id.numpy(): перерыв # Возвращаем окончательный тензор токенизированного ответа вернуть токенизированный_ответ[0] вот ошибка
AttributeError Traceback (последний вызов последним) Ячейка In[421], строка 2 1 # ТЕСТИРОВАНИЕ ----> 2 w3_unittest.test_ответ_вопрос(ответ_вопрос) Файл /tf/w3_unittest.py:289 в test_answer_question(target) 286 modelx.load_weights('./pretrained_models/model_qa3') 288 вопрос = "вопрос: Сколько их? Контекст: Пять." --> 289 result = tokenizer.detokenize(target(question, modelx, tokenizer)).numpy()[0].decode() 290 случаев = [] 292 t = test_case() #inps, targs AttributeError: объект 'int' не имеет атрибута 'decode'``` мой код проходит все примеры и получает правильный ответ, но доцент проходит модульный тест
Я работаю над специализацией Coursera по глубокому обучению, и мой код проходит все примеры, но на модульном тесте я постоянно получаю неправильный ответ
вот вопрос. Упражнение 3. Реализация функции ответа на вопрос Реализуйте функцию ответ_вопрос. Вот шаги: Настройка вопроса: Токенизировать данный вопрос, используя предоставленный токенизатор. Добавьте к тензору дополнительное измерение для совместимости. Дополните тензор вопроса, используя Pad_sequences, чтобы гарантировать, что последовательность имеет указанную максимальную длину. Эта функция усекает последовательность, если она больше, или дополняет нулями, если она короче. Настройка ответа: Токенизируйте первоначальный ответ, отметив, что все ответы начинаются со строки «ответ:». Добавьте к тензору дополнительное измерение для совместимости. Получите идентификатор токена EOS, обычно представленный цифрой 1. Сгенерировать ответ: Цикл для итераций decoder_maxlen. Используйте функцию Transformer_utils.next_word, которая прогнозирует следующий токен в ответе, используя модель, входной документ и текущее состояние вывода. Объедините предсказанное следующее слово с выходным тензором. Условие остановки: Генерация текста прекращается, если модель прогнозирует токен EOS. Если токен EOS предсказан, выйдите из цикла. вот мой код
def answer_question(вопрос, модель, токенизатор, encoder_maxlen=150, decoder_maxlen=50): # Токенизировать вопрос tokenized_question = tokenizer.tokenize(вопрос) tokenized_question = tf.expand_dims(tokenized_question, 0) Padded_question = Pad_sequences (tokenized_question, maxlen = encoder_maxlen, дополнение = 'post', truncating = 'post') # Токенизировать начальную часть ответа с помощью "ответ: " tokenized_answer = tokenizer.tokenize("ответ:") токенизированный_ответ = tf.expand_dims(токенизированный_ответ, 0) # Получите идентификатор токена EOS eos = tokenizer.string_to_id("") # Генерируем ответ для меня в диапазоне (decoder_maxlen): next_word_id = Transformer_utils.next_word(дополненный_вопрос, токенизированный_ответ, модель) # Убедитесь, что next_word_id не является скаляром если не isinstance(next_word_id, tf.Tensor): поднять TypeError("Ожидал, что next_word_id будет тензором, получен тип: {}".format(type(next_word_id))) # Объединить предсказанный идентификатор следующего слова токенизированный_ответ = tf.concat([токенизированный_ответ, next_word_id], ось=-1) # Прерывание, если предсказан токен EOS если eos в next_word_id.numpy(): перерыв # Возвращаем окончательный тензор токенизированного ответа вернуть токенизированный_ответ[0] вот ошибка
AttributeError Traceback (последний вызов последним) Ячейка In[421], строка 2 1 # ТЕСТИРОВАНИЕ ----> 2 w3_unittest.test_ответ_вопрос(ответ_вопрос) Файл /tf/w3_unittest.py:289 в test_answer_question(target) 286 modelx.load_weights('./pretrained_models/model_qa3') 288 вопрос = "вопрос: Сколько их? Контекст: Пять." --> 289 result = tokenizer.detokenize(target(question, modelx, tokenizer)).numpy()[0].decode() 290 случаев = [] 292 t = test_case() #inps, targs AttributeError: объект 'int' не имеет атрибута 'decode'``` мой код проходит все примеры и получает правильный ответ, но доцент проходит модульный тест
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Декодирование JWT, AttributeError: объект 'str' не имеет атрибута 'decode'
Anonymous » » в форуме Python - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 288 Просмотры
-
Последнее сообщение Anonymous
-