我正在尝试在Keras中实现自定义指标功能,以找到k处的精度,如下所示:
def PAt20(y_true, y_pred):
score, up_opt = tf.metrics.precision_at_k(y_true, y_pred, 20)
K.get_session().run(tf.local_variables_initializer())
with tf.control_dependencies([up_opt]):
score = tf.identity(score)
return score
其中K是keras.backend,但是根本不起作用,当在模型的编译过程中调用该函数时,出现错误:
输入必须具有最后一个尺寸> = k = 20,但对于'metrics_7 / PAt20 / precision_at_20 / TopKV2'(op:'TopKV2'),输入形状为[?,1],[]且计算出的输入张量为1 :输入[1] = <20>。
有什么建议吗?