R to_categorical для маркировки последовательности с помощью Keras - PullRequest
0 голосов
/ 31 мая 2018

У меня есть определенный фрейм данных, поэтому я пытаюсь создать вход с меткой последовательности для задачи глубокого обучения.Итак, у меня есть теги для каждого из элементов Sentence, я создаю векторы WordIndex для элементов предложения, дополняю их для 10 измерений, делаю ту же операцию для тегов элементов предложения (создаю TagIndex для тегов, дополняю их до 10размеры).тогда мне нужно преобразовать TagIndices в переменную категории.Вот когда появляется ошибка.Любая помощь будет отличной.Это правильный подход?

SentenceID = c(1,1,1,1,2,2,2,3,3,3,3,3,3,3,3)
Tokens = c("I","went","to","school","nobody","can","find","some","people","know","what","they","are","doing","now")
WordIndex = c(3,4,7,8,9,10,12,54,34,66,33,89,87,23,22)
TagIndex = c(1,3,2,4,1,3,4,1,2,4,3,4,2,3,4)

df = data.frame(SentenceID, Tokens, WordIndex, TagIndex)

lst <- split(df$WordIndex, f = df$SentenceID)

lstWord2 <- lapply(lst, function(x){
  if (length(x) < 10){
    x2 <- c(x, rep(0, 10 - length(x)))
  }
  return(x2)
})

lstTag <- split(df$TagIndex, f = df$SentenceID)

lstTag2 <- lapply(lstTag, function(x){
  if (length(x) < 10){
    x2 <- c(x, rep(0, 10 - length(x)))
  }
  return(x2)
})

is.vector(lstTag2)

y <- to_categorical(lstTag2, num_classes = NULL)

Ошибка, которую я получаю, заключается в следующем.

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  TypeError: int() argument must be a string, a bytes-like object or a number, not 'dict'

Detailed traceback: 
  File "C:\Users\balak\AppData\Local\conda\conda\envs\R-TENS~1\lib\site-packages\keras\utils\np_utils.py", line 22, in to_categorical
    y = np.array(y, dtype='int')

1 Ответ

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

Я полагаю, что функция to_categorical требует, чтобы входные данные были матрицей, что делает это работающим:

SentenceID = c(1,1,1,1,2,2,2,3,3,3,3,3,3,3,3)
Tokens = c("I","went","to","school","nobody","can","find","some","people","know","what","they","are","doing","now")
WordIndex = c(3,4,7,8,9,10,12,54,34,66,33,89,87,23,22)
TagIndex = c(1,3,2,4,1,3,4,1,2,4,3,4,2,3,4)

df = data.frame(SentenceID, Tokens, WordIndex, TagIndex)

lst <- split(df$WordIndex, f = df$SentenceID)

lstWord2 <- lapply(lst, function(x){
  if (length(x) < 10){
    x2 <- c(x, rep(0, 10 - length(x)))
  }
  return(x2)
})

lstTag <- split(df$TagIndex, f = df$SentenceID)

lstTag2 <- lapply(lstTag, function(x){
  if (length(x) < 10){
    x2 <- c(x, rep(0, 10 - length(x)))
  }
  return(x2)
})


y <- to_categorical(as.matrix(lstTag2), num_classes = NULL)

Я получил это:

> y
, , 1

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    0    1    1    1    1    1     1
[2,]    0    0    0    1    1    1    1    1    1     1
[3,]    0    0    0    0    0    0    0    0    1     1

, , 2

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    0    0    0    0    0    0    0    0     0
[2,]    1    0    0    0    0    0    0    0    0     0
[3,]    1    0    0    0    0    0    0    0    0     0

, , 3

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    1    0    0    0    0    0    0     0
[2,]    0    0    0    0    0    0    0    0    0     0
[3,]    0    1    0    0    0    1    0    0    0     0

, , 4

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    1    0    0    0    0    0    0    0     0
[2,]    0    1    0    0    0    0    0    0    0     0
[3,]    0    0    0    1    0    0    1    0    0     0

, , 5

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    1    0    0    0    0    0     0
[2,]    0    0    1    0    0    0    0    0    0     0
[3,]    0    0    1    0    1    0    0    1    0     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...