首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >predict_classes()在R中被弃用,用什么代替?

predict_classes()在R中被弃用,用什么代替?
EN

Stack Overflow用户
提问于 2022-08-10 01:36:16
回答 3查看 122关注 0票数 0

我在RStudio中创建了一个CNN,使用keras来预测MNIST的数字。我现在正尝试使用下面的代码使用这个模型进行预测

代码语言:javascript
复制
cnn_pred <- cnn_model %>%
    predict_classes(x_test)

但是predict_classes()已经被否决了,我需要一些东西来替换它。我尝试过使用tried (),但是当我需要它来预测数字是(0,1,2,3,4,5,6,7,8或9)时,它会产生连续的预测。

CNN模型有什么功能可以给出一个明确的预测?

EN

回答 3

Stack Overflow用户

发布于 2022-10-20 05:24:24

这是一个复杂的方法,但我设法让它开始工作。我首先必须从tf对象中获取数组,这个数组原来是python数组,所以必须将其转换为R对象。然后我可以与另一个r对象进行比较/计算。

这是对测试数据的预测,输出(prednn.tf)是一个张量:

代码语言:javascript
复制
prednn.tf <- modelnn %>% predict(x_test) %>% k_argmax() 

现在使用np_array将张量转换为数组:

代码语言:javascript
复制
prednn.array <- np_array(prednn.tf)

现在转到r对象:

代码语言:javascript
复制
prednn.array <- reticulate::py_to_r(prednn.array) 

现在,将预测结果与实际情况进行比较,并计算其准确性:

代码语言:javascript
复制
accuracy(prednn.array, g_test) 

Note -以下是精度函数:

代码语言:javascript
复制
accuracy <- function(pred, truth)
  mean(drop(pred) == drop(truth))

所有这些都是因为不推荐predict_classes()。也许有更简单的方法,但这对我有用。

票数 1
EN

Stack Overflow用户

发布于 2022-08-10 01:46:18

您可以使用

代码语言:javascript
复制
cnn_pred <- cnn_model %>%
    predict(x_test) %>% k_argmax()
票数 0
EN

Stack Overflow用户

发布于 2022-10-20 05:42:29

在我的例子中,似乎更容易的方法是这样做:

更改精度函数,从:

代码语言:javascript
复制
accuracy <- function(pred, truth)
  mean(drop(pred) == drop(truth))

至:

代码语言:javascript
复制
accuracy <- function(pred, truth)
  mean(drop(as.numeric(pred)) == drop(truth))

然后进行了以下工作:

代码语言:javascript
复制
modelnn %>% predict(x_test) %>% k_argmax() %>% accuracy(g_test)

看来,as.numeric()会取张量并提取值。希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73299730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档