Я обучил нейронную сеть задаче классификации изображений и сейчас пытаюсь создать 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)