python - Keras 问题与 3d 张量的前 k 个分类精度
问题描述
我在使用 keras 中的前 k 个分类准确度指标时遇到问题。我正在对基因组数据进行培训,大约有 10,000 个人,每个人都有 4,000 个核苷酸,可以是四个碱基之一,因此它们是一个热编码的。输出类似,但不是四个基,而是三个类别。
输入形状 (10000, 4000, 4) 输出形状 (10000, 4000, 3)
我尝试使用前 k 个分类精度,但我得到: ValueError: Shape must be rank 2 but is rank 3 for 'metrics/top_k_categorical_accuracy/in_top_k/InTopKV2' (op: 'InTopKV2') with input shapes: [?,?, 3],[?,?],[]。
显然 keras 不喜欢 3d 张量。我该如何解决这个问题?
解决方案
这可能会帮助你。
简而言之,top k 分类精度没有被定义为尺寸灵活。
您需要转换数据以适应。
import keras.backend as K
def my_top_k(true, pred, num):
true = K.reshape(true, (-1, features_num))
pred = K.reshape(pred, (-1, features_num))
return top_k_categorical_accuracy(true, pred, k=num)
推荐阅读
- android - 使用 kotlin 合成时,在 Fragment 的 onViewCreated 上设置视图属性(setText 和 setOnClickListener)不起作用
- javascript - QML 和 RSA 加密
- xl-deploy - 如何在 XLDeploy 中查看已部署构建的占位符值
- javascript - MMM-yyyy 格式的 AMchart 数据
- r - 重置 R 闪亮的 actionButton 以多次使用它
- java - 在自己的构造函数中引用 java 类
- reactjs - 玩笑模拟导致警告:正确的大小写,标签无法识别和未知属性
- ruby-on-rails - Windows 上的 PostgreSQL 应用程序无法正常工作
- google-sheets - 如果值大于 0 标记线绿色
- laravel - Laravel Vue 道具 htmlspecialchars()