始める無料で始める

Part 2: 宝探し

宝探しに少しだけひねりがあります。ノートパソコンを持ってくるのを忘れてしまい、手元にはメモリが限られたデバイスしかありません。コメントを除いて、4 行未満のコードで書く必要があります。できるだけコンパクトにするために、リスト内包表記を使いましょう。

リスト内包表記は、1 行でデータをループ処理する便利な方法です。たとえば、数値リストから偶数だけを取り出したいときは、[n for n in range(100) if n%2==0] のように書けます。このように、リスト内包表記を使うと、for ループと if 文を 1 行にまとめられます。

この演習はコースの一部です

Kerasで学ぶMachine Translation

コースを見る

演習の手順

  • treasure_map 内のワンホットエンコード済みベクトルから単語 ID を取得します。
  • treasure map のバッチサイズ(最初の次元)を取得し、それを使って for ループを作成します。
  • word_ids の i 行目を反復して i 番目の文の単語を取得します。このとき、ゼロと等しい単語 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))
コードを編集して実行