取回 AzureML 实验生成的图像

Getting the images produced by AzureML experiments back

我在 Azure 中创建了一个玩具示例。 我有以下数据集:

  amounts       city code user_id
1    2.95 Colleferro  100     999
2    2.95    Subiaco  100     111
3   14.95   Avellino  101     333
4   14.95 Colleferro  101     999
5   14.95  Benevento  101     444
6  -14.95    Subiaco  110     111
7  -14.95   Sgurgola  110     555
8  -14.95       Roma  110     666
9  -14.95 Colleferro  110     999

我创建了一个 AzureML 实验,它简单地绘制了金额列。

进入R脚本模块的代码如下:

data.set <- maml.mapInputPort(1) # class: data.frame  
#-------------------
plot(data.set$amounts);
title("This title is a very long title. That is not a problem for R, but it becomes a problem when Azure manages it in the visualization.")
#-------------------
maml.mapOutputPort("data.set");

现在,如果您单击 R 脚本的右侧输出端口,然后单击 "Visualize"

您将看到显示输出的 Azure 页面。

现在,发生以下情况:

  1. 情节被到一个既定的space中(例如:标题被删了!!!)
  2. 生成的图像是低分辨率图像。
  3. Azure 生成的 JSON 是 "dirty"(使 C# 中的 解码 变得困难)。

这似乎不是获取 AzureML 实验生成的图像的最佳方式。

可能的解决方案:我想要

to send the picture produced in my experiment to a space like the blob storage.

当我有一个 web-app 并且我必须选择 Azure 生成的图像并将其放在我的 Web 应用程序页面上时,这也是一个很好的解决方案。 你知道有没有办法把图片发到某个地方?

要使用 R 将图像保存到 Azure Blob 存储,您需要执行两个步骤,包括从 Execute R Script 的 R 设备输出中获取图像并将图像上传到 Blob 存储。

有两种方法可以实现上述步骤。

  1. 您可以将实验发布为网络服务,然后从网络服务请求的响应中获取带有 base64 编码的图像并使用 Azure Blob 存储 REST API with R to upload the images. Please refer to the article How to retrieve R data visualization from Azure Machine Learning.

  2. 您可以直接在 C# 中添加一个模块,以从 Execute R Script 的输出中获取和上传图像。请参考文章Accessing a Visual Generated from R Code in AzureML.

您可以通过以下方式调整图片大小:

graphics.off()
png("myplot.png",width=300,height=300) ## Create new plot with desired size
plot(data.set);
file.remove(Sys.glob("*rViz*png")) ## Get rid of default rViz file