Часть 2: Поиск сокровища
Теперь в поиске сокровища появляется небольшое усложнение. Вы забыли взять ноутбук и у вас есть только устройство с ограниченным объёмом памяти. Написанный вами код должен занимать не более 4 строк (без учёта комментариев). Чтобы сделать код максимально компактным, вы будете использовать списковые включения.
Списковые включения — отличный способ перебирать данные в одну строку кода. Например, чтобы получить все чётные числа из списка, можно написать [n for n in range(100) if n%2==0]. Как видите, списковые включения позволяют объединить цикл for и условие if в одной строке.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- Получите идентификаторы слов для векторов унитарного кодирования в
treasure_map. - Определите размер батча (самое первое измерение) карты сокровищ и используйте его для создания цикла
for. - Получите слова i-й последовательности, перебирая i-ю строку
word_ids, игнорируя идентификаторы слов, равные нулю.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Get the word IDs from the treasure map
word_ids = np.argmax(____, axis=-1)
# Get the batch size from the treasure map
for i in range(treasure_map.shape[____]):
# Get all the words of the i-th sentence using list comprehension
words = [index2word[____] for wid in word_ids[____] if wid != ____]
print("Instruction ", i+1, ": ", ' '.join(words))