ส่วนที่ 2: ตามล่าขุมทรัพย์
คราวนี้มีเงื่อนไขพิเศษเพิ่มขึ้นมา คุณลืมพกแล็ปท็อปและมีเพียงอุปกรณ์ที่มีหน่วยความจำจำกัดติดมือมาเท่านั้น โค้ดที่เขียนต้องมีความยาวไม่เกิน 4 บรรทัด (ไม่นับคอมเมนต์) เพื่อให้โค้ดกระชับที่สุด จึงต้องใช้ list comprehension
list comprehension เป็นวิธีที่ดีในการวนลูปผ่านข้อมูลด้วยโค้ดเพียงบรรทัดเดียว ตัวอย่างเช่น หากต้องการดึงเลขคู่ทั้งหมดจากลิสต์ตัวเลข สามารถเขียนได้ว่า [n for n in range(100) if n%2==0] จะเห็นได้ว่า list comprehension ช่วยให้รวม for loop และ if statement ไว้ในบรรทัดเดียวได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- ดึง word ID จากเวกเตอร์ onehot encoded ใน
treasure_map - ดึง batch size (มิติแรกสุด) ของ treasure map แล้วนำไปสร้าง for loop
- ดึงคำของประโยคที่ i โดยวนซ้ำแถวที่ i ของ
word_idsพร้อมละเว้น word ID ที่มีค่าเท่ากับศูนย์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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))