禁止R中Keras的控制台输出

时间:2018-06-26 11:01:04

标签: r keras

我试图在docker环境中使用R脚本对要传递给它的输入进行一些分类。 该脚本仅应打印分类的输出,但是我总是得到Using TensorFlow backend.作为调用Keras函数的第一行的输出。

我做了一个小例子。

library(keras)

v <- (c(1,2,3))
print(v)
vCat<-to_categorical(v)

我想将此显示为输出:

[1] 1 2 3

但是我明白了

[1] 1 2 3
Using TensorFlow backend.

因此,我在Google上搜索了sinksuppress...等其他内容,例如Suppress automatic output to console in RSuppress one command's output in RSuppress automatic output to console in R。然后,我尝试了以下代码:

library(keras, quietly = T)

v <- (c(1,2,3))
print(v) 
sink("/dev/null")
capture.output(suppressMessages(suppressWarnings(
suppressPackageStartupMessages(
vCat<-to_categorical(v) ))), file = "/dev/null")
sink()

这仍然不会隐藏Using TensorFlow backend.消息。在docker环境中,使用littler从命令行r test.R调用脚本。 注意:仅在Rstudio中运行脚本时,我不会收到消息。

1 个答案:

答案 0 :(得分:0)

这是Keras的问题(即不是R或Tensorflow的问题),正如我已经评论过的,有几个人complaining about this,但到目前为止Keras的维护者尚未提出解决方案。 / p>

issue thread above中已经建议过,一个 hack 是要找到keras/backend/__init__.py文件并注释掉following line

sys.stderr.write('Using TensorFlow backend.\n')

我上次检查时,R中的Keras仅使用Tensorflow后端,因此您无需为__init__.py中的其他后端选项重复此操作。