InvalidArgumentError: index [127,7] = 43 отсутствует в [0, 43) в Keras R - PullRequest
0 голосов
/ 24 октября 2018

Проблема связана с: InvalidArgumentError (см. Выше для отслеживания): индексы [1] = 10 не в [0, 10) Мне нужно это для R и, следовательно, другое решение, чем указано вссылка выше.

maxlen <- 40
chars <- c("'",  "-",  " ",  "!",  "\"", "(",  ")",  ",",  ".",  ":",  ";",  "?",  "[",  "]",  "_",  "=",  "0", "a",  "b",  "c",  "d",  "e", "f",  "g",  "h",  "i",  "j",  "k",  "l",  "m",  "n",  "o",  "p",  "q",  "r",  "s",  "t",  "u",  "v",  "w",  "x",  "y",  "z")



tokenizer <- text_tokenizer(char_level = T, filters = NULL)

tokenizer %>% fit_text_tokenizer(chars)
unlist(tokenizer$word_index)

Вывод:

 '  -     !  "  (  )  ,  .  :  ;  ?  [  ]  _  =  0  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z 
 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 

Как изменить индексирование, чтобы оно начиналось с 0, а не с 1 в text_tokenizer?

Ошибка, полученная после запускаfit () выглядит следующим образом:

InvalidArgumentError: indices[127,7] = 43 is not in [0, 43)
     [[Node: embedding_3/embedding_lookup = GatherV2[Taxis=DT_INT32, Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@training_1/RMSprop/Assign_1"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](embedding_3/embeddings/read, embedding_3/Cast, training_1/RMSprop/gradients/embedding_3/embedding_lookup_grad/concat/axis)]]

Но я считаю, что изменение индексации решит мою проблему.

1 Ответ

0 голосов
/ 24 октября 2018

Индекс 0 часто зарезервирован для отступов , поэтому не стоит начинать фактические индексы с 0.Вместо этого вам следует перейти к слою Embedding и добавить 1 к входному размеру, как предложено в документации :

input_dim: int> 0.Размер словаря, то есть максимальный целочисленный индекс + 1.

В вашем случае это будет 43 + 1 = 44.

...