如何解决如何定义一个使用 R 代码但从 rTorch 调用的 Python 类?
我正在使用 rTorch(例如 https://f0nzie.github.io/rtorch-minimal-book/)。我想从 rTorch 中定义一个 DataSet 类。我可以用 py_run_file
做到这一点。但是,我希望这个 DataSet Class 使用 R 代码,因为在 tidyR 中数据准备对我来说更容易。在 Python 中,我为此使用 rpy2
,当从 Python 内部调用时,它工作正常。
但是,当我从 rTorch
或 reticulate
嵌入执行此操作时,它不起作用(R studio 崩溃;在命令行上我收到“R 已初始化”),可能是因为 R- ->Python-->R 有点循环(参见 https://github.com/rstudio/reticulate/issues/56)。 [但我认为 rpy2 可以打开另一个 R 会话实例?]
这是我认为的最小示例:
准备数据的 R 代码(在 prepDataSet.R 中):
library(tidyverse)
prepDataSetFunc <- function(parameter) {
df <- tibble(name=parameter,x=1:10,y=10:1)
df
### Of course the real function does much more ...
}
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset,DataLoader
import rpy2.robjects as ro
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
pandas2ri.activate()
ro.r('''source('prepDataSet.R')''')
prepFunc = ro.globalenv["prepDataSetFunc"]
class RDataSet(DataSet):
def __init__(self,py_parameter):
self.df = prepFunc(parameter=py_parameter)
def __len__(self):
return len(self.dfy.index)
def __getitem__(self,i):
return self.df.iloc[i:(i+1)].values.astype('float32')
完成所有 rTorch 工作的主要 R 代码:
library(rTorch)
library(reticulate)
library(tidyverse)
library(magrittr)
reticulate::use_condaenv("mrTorchEnv") ## This was another problem,i.e. I Could not install rpy2 in rTorch environment,so I change the environment here
main <- py_run_file("PyClasses.py") ## This already fails
##### Then I want to do more stuff,i.e. DataLoader etc....
或者有什么方法可以从 rTorch 定义一个 PyTorch DataSet 类,然后使用 R 代码?或者通过字符串将R对象传递给Class???
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。