ichou1のブログ

主に音声認識、時々、データ分析のことを書く

Kerasメモ(Embeddingレイヤ) その3

https://www.oreilly.co.jp/books/images/picture978-4-87311-857-4.gif
「RとKerasによるディープラーニング」

書籍を読んでいて、コードの誤りと思われる部分があったのでメモしておく。

例6-11 GloVe 単語埋め込み行列の準備
embedding_dim <- 100

embedding_matrix <- array(0, c(max_words, embedding_dim))

for (word in names(word_index)) {
  index <- word_index[[word]]
  if (index < max_words) {
    embedding_vector <- embeddings_index[[word]]
    if (!is.null(embedding_vector))
      # Words not found in the embedding index will be all zeros.
      embedding_matrix[index+1,] <- embedding_vector
  }
}
コード全体

deep-learning-with-r-notebooks/6.1-using-word-embeddings.Rmd at master · jjallaire/deep-learning-with-r-notebooks · GitHub

以下の箇所は

embedding_matrix[index+1,] <- embedding_vector

正しくは

embedding_matrix[index,] <- embedding_vector

と思われる。
(Rでの添字は1始まりなので)

word_indexを生成している部分の確認。

tokenizer <- text_tokenizer(num_words=max_words) %>% 
    fit_text_tokenizer(texts)

word_index <- tokenizer$word_index

中身を確認してみる。

> tokenizer$index_word[0]
named list()

> tokenizer$index_word[1]
$`1`
[1] "the"

確認。

> max_words <- 50
> embedding_dim <- 100
> embedding_matrix <- array(0, c(max_words, embedding_dim))
> dim(embedding_matrix)
[1]  50 100

> embedding_matrix[1,]
  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

> embedding_matrix[0,]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
     [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
     [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
     [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
     [,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62]
     [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74]
     [,75] [,76] [,77] [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86]
     [,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98]
     [,99] [,100]

以下のブログによると、
R言語でディープラーニング — パロアルトインサイト

元々はpythonで書かれたコードをRに書き換えた模様。

Allaire氏はKerasの開発者であるFrancois Chollet氏と共著で「Deep Learning with R」という本を出していますが、これはChollet氏が既に出版した「Deep Learning with Python」という本をベースにコードを全てRに書き換えただけのものと説明していました。