R语言基于深度网络识别MNIST手写数字 TensorFlow新版本预测函数报错求解
问题根因
k_argmax()返回的是TensorFlow张量类型,不属于R原生数据结构,无法直接用于table()混淆矩阵生成、cbind()数据拼接等R基础函数操作,只需补充一步类型转换即可解决问题。- 概率预测结果
predict(testx)本身输出的就是R矩阵格式,不需要额外转换。
修复后的关键代码
# 原预测代码追加 as.integer() 转换为R原生整数向量 pred <- model %>% predict(testx) %>% k_argmax() %>% as.integer() # 转换后table可正常生成混淆矩阵 table(Predicted = pred, Actual = mnist$test$y) # prob无需额外修改,pred转换后cbind可正常运行 prob <- model %>% predict(testx) cbind(prob, Predicted_class = pred, Actual = mnist$test$y)[1:5,]
其他调整说明
如果使用macOS/Linux系统,代码中所有windows()调用会报错,替换为dev.new()即可正常弹出绘图窗口。训练30轮可能存在轻微过拟合,可根据实际需求将epochs调整为15~20轮。
内容的提问来源于stack exchange,提问作者Farshid Owrang
相关产品推荐
相关产品推荐

