Caret doparallel in Rmarkdown: Thiếu thông tin dài dòng khi sử dụng render ()


8

Tôi có Rmarkdowntài liệu ví dụ đơn giản sau (test.Rmd):

---
title: "Test Knit Caret Paralell VerboseIter"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

require(caret)
require(doParallel)


```

## data

```{r data}

set.seed(998)
training <- twoClassSim()

```

## model

```{r fitmodel}
fitControl <- trainControl(
  method = "repeatedcv",
  number = 3,
  repeats = 2,
  verboseIter = T)


ncores <- detectCores()-1

cl <<- makePSOCKcluster(ncores, verbose = TRUE, outfile = "")
registerDoParallel(cl)

set.seed(825)
Fit <- train(Class ~ ., 
             data = training, 
             method = "nnet", 
             trControl = fitControl,
             trace = FALSE
)
stopCluster(cl)
registerDoSEQ()
```

## results

```{r results}
Fit
```

Tôi có một số tùy chọn để chạy mã này hoặc đan tài liệu

  1. Sử dụng 'Chạy tất cả các chuncks' trong Rstudio
  2. Sử dụng Knitnút trong Rstudio
  3. Knit tài liệu với render("test.Rmd")

Những điều sau đây xảy ra

  1. Không có thông tin nào được in ở đầu ra hoặc bảng điều khiển trên các lần lặp
  2. Thông tin được in trong R markdownbảng điều khiển
  3. Không có thông tin nào được in trong bảng điều khiển

Trong dự án tôi làm việc tôi muốn knittài liệu với các tham số khác nhau, vì vậy tôi muốn sử dụng tùy chọn cuối cùng. Tuy nhiên tôi cũng muốn xem tiến trình lắp mô hình. Do đó tôi muốn sử dụng tùy chọn 3.

Làm cách nào tôi có thể nhận thông tin về các lần lặp được in trong bảng điều khiển khi tài liệu được hiển thị?

Đây là đầu ra dự kiến ​​tôi muốn xem:

+ Fold1.Rep1: size=1, decay=0e+00 
+ Fold1.Rep1: size=3, decay=0e+00 
+ Fold1.Rep1: size=5, decay=0e+00 
- Fold1.Rep1: size=1, decay=0e+00 
+ Fold1.Rep1: size=1, decay=1e-01 
- Fold1.Rep1: size=3, decay=0e+00 
+ Fold1.Rep1: size=3, decay=1e-01 
- Fold1.Rep1: size=5, decay=0e+00 
+ Fold1.Rep1: size=5, decay=1e-01 
- Fold1.Rep1: size=1, decay=1e-01 
+ Fold1.Rep1: size=1, decay=1e-04 
- Fold1.Rep1: size=3, decay=1e-01 
+ Fold1.Rep1: size=3, decay=1e-04 
- Fold1.Rep1: size=1, decay=1e-04 
etc.

Câu trả lời:


2

Điều này có thể tạo ra những gì bạn đang tìm kiếm, chuyển thể từ đây , nó về cơ bản tái tạo khi bạn sử dụng các knitnút ở rstudio, trong đó sản xuất tiết từ train, tuy nhiên sử dụng phương pháp này, bạn sẽ có thể vượt qua trong parametersđể render. Chỉ cần thay đổi đường dẫn đến tệp wdcủa bạnrmd

owd = setwd("path/to/your-Rmd-directory")
system2("Rscript", c("-e", shQuote("library(rmarkdown); render('test.Rmd')"),
            system2("html", "test.html"),
            setwd(owd)))

Nó hoạt động. Nhưng có cách nào để ngăn chặn de proces không? Khi tôi dừng lại ở Rstudio, quá trình dường như tiếp tục ở chế độ nền.
Wietze314

1
@ Wietze314 Sử dụng stoptrong Rstudio hoặc Escphím hoạt động với tôi. Bạn cũng có thể đặttimeout
Matt

Tôi đã sử dụng stoptrong Rstudio và có vẻ như nó đã dừng lại. Nhưng khi tôi nhìn vào trình quản lý tác vụ, tất cả các lõi vẫn đang chạy trên 100%. Chỉ khi tôi tự tắt tất cả các phiên R trong trình quản lý tác vụ thì nó mới thực sự dừng.
Wietze314

0

Bạn có thể thêm một knit_hookở đầu tệp Rmd ​​để chụp các đầu ra của bàn điều khiển và in chúng trong khi kết xuất.

```{r, include=FALSE}
print_output <- function(x, options) {
  cat(x)
  return(x)
}
knitr::knit_hooks$set(chunk = print_output)
```

Cảm ơn bạn đã trả lời. Tôi đã thử giải pháp của bạn, nhưng nó hoạt động tốt, nhưng đầu ra dành cho tệp markdown, chỉ được in ra bàn điều khiển. Làm thế nào tôi có thể chắc chắn, đầu ra dành cho đánh dấu được in trong tệp đầu ra (quá).
Wietze314

@ Wietze314 Đã chỉnh sửa. Nếu hàm trả về đầu vào, nó cũng sẽ được in trong tệp dệt kim. outputcần phải được thay đổi chunkđể làm cho các phông chữ phù hợp. Xem yihui.name/knitr/hooks .
Feng Mai

Tôi cũng nhận thấy rằng đầu ra chỉ được in khi chunkmã đã được thực thi đầy đủ. Vì vậy, tiến trình trong quá trình học không được in, mà tôi muốn theo dõi.
Wietze314
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.