This Microsoft Azure documentation显示了如何为Azure Machine Learning Studio创作自定义模块。有一个关于从模块返回多个输出的段落。然而按照说明我只能在第一个输出端口的可视化中看到数据,而其他输出端口仍为空。
这是this one的后续问题。我在那里接受了答案,因为我误解了我写的自定义模块的结果 - 有些输出端口可能是空的,我匆忙假设输出是正确的。但是,在RStudio中运行相同的代码确实会生成应该在ML Studio中返回的数据。此外,打印数据有效。
最小例子:
模块的ZIP文件中包含的源文件:
test.R
foo <- function() {
require(data.table)
out1 <- data.table(mtcars)
out2 <- data.table(cars)
print("out1:")
print(head(out1))
print("out2:")
print(head(out2))
return(list(out1, out2))
}
的test.xml
<Module name="Multiple outputs">
<Owner>...</Owner>
<Language name="R" sourceFile="test.R" entryPoint="foo"/>
<Ports>
<Output id="out_1" name="out1" type="DataTable">
<Description>...</Description>
</Output>
<Output id="out_2" name="out2" type="DataTable">
<Description>...</Description>
</Output>
</Ports>
</Module>
这使得该模块成功运行:
输出日志看起来不错:
[ModuleOutput] [1] "out1:"
[ModuleOutput]
[ModuleOutput] mpg cyl disp hp drat wt qsec vs am gear carb
[ModuleOutput]
[ModuleOutput] 1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
[ModuleOutput]
[ModuleOutput] 2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
[ModuleOutput]
[ModuleOutput] 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
[ModuleOutput]
[ModuleOutput] 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
[ModuleOutput]
[ModuleOutput] 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
[ModuleOutput]
[ModuleOutput] 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
[ModuleOutput]
[ModuleOutput] [1] "out2:"
[ModuleOutput]
[ModuleOutput] speed dist
[ModuleOutput]
[ModuleOutput] 1: 4 2
[ModuleOutput]
[ModuleOutput] 2: 4 10
[ModuleOutput]
[ModuleOutput] 3: 7 4
[ModuleOutput]
[ModuleOutput] 4: 7 22
[ModuleOutput]
[ModuleOutput] 5: 8 16
[ModuleOutput]
[ModuleOutput] 6: 9 10
我想我正确地遵循了文档中的说明。 以前有人遇到过这个问题吗?有没有已知的解决方案?
非常感谢任何帮助!
答案 0 :(得分:1)
R输出桥需要一个数据帧,试试这个而不是data.table
out1 <- data.frame(mtcars)
out2 <- data.frame(cars)