Kerasメモ(Embeddingレイヤ) その3
書籍を読んでいて、コードの誤りと思われる部分があったのでメモしておく。
例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 } }
コード全体
以下の箇所は
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に書き換えただけのものと説明していました。