这个闪亮的应用程序是由:这里构建的,它基本上使用R中的tensorflow python。我的主要问题是如何在R中运行py代码。
编辑:我通过做一些更改来使它运行。一切都在运转。然而,没有字云,也不能使输出打印在闪亮。上传图像后,输出将位于Rstudio的控制台中。
library(wordcloud)
shinyServer(function(input, output) {
PYTHONPATH <- "C:/Program Files/Anaconda3" #should look like /Users/yourname/anaconda/bin if you use anaconda python distribution in OS X
CLASSIFYIMAGEPATH <- "C:/Program Files/Anaconda3/Lib/site-packages/tensorflow/models/image/imagenet" #should look like ~/anaconda/lib/python2.7/site-packages/tensorflow/models/image/imagenet
outputtext <- reactive({
###This is to compose image recognition template###
inFile <- input$file1 #This creates input button that enables image upload
template <- paste0("python"," ", "classify_image.py") #Template to run image recognition using Python
if (is.null(inFile))
{system(paste0(template," --image_file /tmp/imagenet/cropped_panda.jpg"))} else { #Initially the app classifies cropped_panda.jpg, if you download the model data to a different directory, you should change /tmp/imagenet to the location you use.
system(paste0(template," --image_file ",inFile$datapath)) #Uploaded image will be used for classification
}
})
output$answer <- renderPrint({outputtext()})
output$plot <- renderPlot({
###This is to create wordcloud based on image recognition results###
df <- data.frame(gsub(" *\\(.*?\\) *", "", outputtext()),gsub("[^0-9.]", "", outputtext())) #Make a dataframe using detected objects and scores
names(df) <- c("Object","Score") #Set column names
df$Object <- as.character(df$Object) #Convert df$Object to character
df$Score <- as.numeric(as.character(df$Score)) #Convert df$Score to numeric
s <- strsplit(as.character(df$Object), ',') #Split rows by comma to separate rows
df <- data.frame(Object=unlist(s), Score=rep(df$Score, sapply(s, FUN=length))) #Allocate scores to split words
# By separating long categories into shorter terms, we can avoid "could not be fit on page. It will not be plotted" warning as much as possible
wordcloud(df$Object, df$Score, scale=c(4,2),
colors=brewer.pal(6, "RdBu"),random.order=F) #Make wordcloud
})
output$outputImage <- renderImage({
###This is to plot uploaded image###
if (is.null(input$file1)){
outfile <- "/tmp/imagenet/cropped_panda.jpg"
contentType <- "image/jpg"
#Panda image is the default
}else{
outfile <- input$file1$datapath
contentType <- input$file1$type
#Uploaded file otherwise
}
list(src = outfile,
contentType=contentType,
width=300)
}, deleteFile = TRUE)
})
Rstudio控制台上的输出示例:
巴格犬(得分= 0.89841)、公獒(得分= 0.01825)、巴西犬(得分= 0.01114)、法国斗牛犬(得分= 0.00161)、北京犬(得分= 0.00091) W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_def_util.cc:332] BatchNormWithGlobalNormalization被否决。它将在GraphDef版本9中停止工作。请使用tf.nn.batch_normalization()。
有人知道这是怎么回事吗?我尝试过各种方法,但无法打印输出(使用renderPrint,呈现文本.等)
发布于 2017-02-20 01:56:25
好的,这里有两种方法-
1
从CRAN安装RPython for windows Linux/Mac。下载为zip Clone/下载为zip选项- https://github.com/cjgb/rPython-win
将其解压缩,将文件夹重命名为rPython,将configure.win更改为指向您的python安装--我猜它必须是Anaconda。
c.在R中执行代码-
library(devtools) # devtools needs to be installed - install.packages("devtools")
install("C:/Users/username/Downloads/rPython") # location where you have downloaded rPython
我的输出-
Installing rPython
"C:/PROGRA~1/R/R-33~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD \
INSTALL "C:/Users/vk046010/Downloads/rPython" \
--library="C:/Users/vk046010/Documents/R/win-library/3.3" --install-tests
* installing *source* package 'rPython' ...
** libs
Warning: this package has a non-empty 'configure.win' file,
so building only the main architecture
c:/Rtools/mingw_64/bin/gcc -I"C:/PROGRA~1/R/R-33~1.2/include" -DNDEBUG -I"d:/Compiler/gcc-4.9.3/local330/include" -I"C:/Anaconda2/include" -O2 -Wall -std=gnu99 -mtune=core2 -c pycall.c -o pycall.o
c:/Rtools/mingw_64/bin/gcc -shared -s -static-libgcc -o rPython.dll tmp.def pycall.o -LC:/Anaconda2/libs -lpython27 -Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-33~1.2/bin/x64 -lR
installing to C:/Users/vk046010/Documents/R/win-library/3.3/rPython/libs/x64
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (rPython)
现在从RStudio执行这个-
# tensorflow caller
library("rPython")
py_code <- "
def classify_image(image_loc):
# load tensorflow and predict here
return image_loc+'person' # return the result here
"
python.exec(py_code)
python.call( "classify_image", 'path/loc/to/image/')
python.call的输出应该是您正在寻找的东西。
2
我以前没这么做过,所以没有人身保证。您可以在R- https://github.com/rstudio/tensorflow中安装tensorflow
https://stackoverflow.com/questions/42340224
复制相似问题