В настоящее время я разрабатываю пользовательский интерфейс, основанный на уценке R и блестящий, чтобы упростить выполнение процесса обучения машинному обучению для других пользователей, не владеющих языком R. Этот процесс обучения выполняется с помощью специальной функции, встроенной в пакет R mxnet и выдает обновления состояния, такие как ошибка обучения или какие пакеты загружаются с помощью функции message()
непосредственно на консоль, при запуске в «нормальном» R-сценарии.Однако при запуске этого приложения в уценке R в браузер ничего не выводится.Следующий скрипт показывает минимальный воспроизводимый пример (с заменой процесса обучения простой «фиктивной» функцией):
---
title: "Training of a Neural Network"
output: html_document
runtime: shiny
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r start_training, echo=F}
inputPanel(
actionButton("button_start_training", "Start training")
)
```
```{r dummy_function, echo=F}
dummy_function <- function(){
for(i in 1:5){
message(paste0("Test: "),i)
Sys.sleep(0.5)
}
}
```
```{r actual_training, echo=F}
event_training = eventReactive(input$button_start_training,{
dummy_function()
})
renderPrint({
event_training()
})
```
Вывод на консоль из dummy_function()
не отображается в браузере, а только вприставка.Если message()
заменено на print()
, то в результате отображается , отображается, но только после , функция завершена, а не "live" .Поскольку фактический процесс обучения занимает несколько часов, я хотел бы предоставить эти обновления, как они будут происходить в консоли.Кроме того, замена message()
на print()
может вызвать некоторые проблемы, поскольку такие вещи, как ошибка обучения, возвращаются в процессе обучения mxnet как сообщение, а не как распечатка (если я правильно понял).
Итакэто сводится к двум вопросам:
- Есть ли способ сделать
renderPrint()
вывод на печать в таком виде, как он выглядит? - Есть ли способ заставить
renderPrint()
использоватьвывод генерируется message()
вместо print()
?
Спасибо за вашу помощь.