我在RStudio中创建了一个CNN,使用keras来预测MNIST的数字。我现在正尝试使用下面的代码使用这个模型进行预测
cnn_pred <- cnn_model %>%
predict_classes(x_test)但是predict_classes()已经被否决了,我需要一些东西来替换它。我尝试过使用tried (),但是当我需要它来预测数字是(0,1,2,3,4,5,6,7,8或9)时,它会产生连续的预测。
CNN模型有什么功能可以给出一个明确的预测?
发布于 2022-10-20 05:24:24
这是一个复杂的方法,但我设法让它开始工作。我首先必须从tf对象中获取数组,这个数组原来是python数组,所以必须将其转换为R对象。然后我可以与另一个r对象进行比较/计算。
这是对测试数据的预测,输出(prednn.tf)是一个张量:
prednn.tf <- modelnn %>% predict(x_test) %>% k_argmax() 现在使用np_array将张量转换为数组:
prednn.array <- np_array(prednn.tf)现在转到r对象:
prednn.array <- reticulate::py_to_r(prednn.array) 现在,将预测结果与实际情况进行比较,并计算其准确性:
accuracy(prednn.array, g_test) Note -以下是精度函数:
accuracy <- function(pred, truth)
mean(drop(pred) == drop(truth))所有这些都是因为不推荐predict_classes()。也许有更简单的方法,但这对我有用。
发布于 2022-08-10 01:46:18
您可以使用
cnn_pred <- cnn_model %>%
predict(x_test) %>% k_argmax()发布于 2022-10-20 05:42:29
在我的例子中,似乎更容易的方法是这样做:
更改精度函数,从:
accuracy <- function(pred, truth)
mean(drop(pred) == drop(truth))至:
accuracy <- function(pred, truth)
mean(drop(as.numeric(pred)) == drop(truth))然后进行了以下工作:
modelnn %>% predict(x_test) %>% k_argmax() %>% accuracy(g_test)看来,as.numeric()会取张量并提取值。希望这能有所帮助!
https://stackoverflow.com/questions/73299730
复制相似问题