R Как разместить трехмерный массив в API сантехника? - PullRequest
2 голосов
/ 03 марта 2020

Я обучил нейронную сеть задаче классификации изображений и сейчас пытаюсь создать API с сантехником для передачи данных в модель и получения прогнозов.

Но я застрял на том, как передать трехмерный массив (изображение) для API. Я пробовал разные httr::POST звонки и преобразования из / в JSON, но не смог заставить его работать. postBody запроса - это список чисел, а не массив.

access_api.R

# Pass array to API
X <- array(rnorm(300 * 200 * 3), dim = c(300, 200, 3))
res <- httr::POST("http://127.0.0.1:6060/predict",
                  body = list(X),
                  encode = "json")

предсказание. R

#* @param X array
#* @post /predict
predict <- function(req) {

  req$postBody

  # Train model ...
}

plumber.R

library(plumber)
r <- plumb("predict.R")
r$run(port = 6060, host = "0.0.0.0")

Я также пытался преобразовать массив в JSON, но тогда структура массива теряется и нужно подлежит восстановлению:

A <- RJSONIO::toJSON(X)
B <- RJSONIO::fromJSON(A)

str(B)

D <- lapply(B, function(x) {
  Reduce(rbind, x)
})

E <- array(unlist(D), dim = dim(X))
str(E)
...