【发布时间】:2018-06-18 15:57:47
【问题描述】:
我尝试在 Keras 中将 pearsons 线性系数作为一个度量来实现,但是由于占位符,我无法使用这个度量来编译我的模型。
def CC(y_true, y_pred):
y_true = K.clip(y_true, K.epsilon(), 1)
y_pred = K.clip(y_pred, K.epsilon(), 1)
n_y_true=y_true/(K.sum(y_true)+K.epsilon())
n_y_pred=y_pred/(K.sum(y_pred)+K.epsilon())
y_true_average=K.mean(y_true)
y_pred_average=K.mean(y_pred)
print((K.map_fn(lambda x: x-y_pred_average,n_y_pred)).shape[0])
if not(K.map_fn(lambda x: x-y_pred_average,n_y_pred)).shape[0]==None:
return (K.sum(K.dot((K.map_fn(lambda x: x-y_pred_average,n_y_pred)),(K.map_fn(lambda x: x-y_true_average,n_y_true))))/(K.count_params(n_y_true)-1))/(K.dot(K.std(n_y_pred),K.std(n_y_true)))
else:
return 0
我尝试使用 K.dot 而不是 * 但是仍然存在相同的错误。在编译期间我收到错误unsupported operand type(s) for *: 'NoneType' and 'NoneType。我无法弄清楚如何解决它。发生这种情况是因为我想按元素将两个张量相乘,但形状中的批量大小在编译期间没有定义并表示为 ?形状为 (?,224,224,3)。有没有办法设置或解决它?
【问题讨论】:
-
你的目标是什么形状的?
-
也是 (?,224,224,3),因为我尝试将一个张量中的每个元素与其在另一个张量中的对应元素(相同索引)相乘
标签: python-3.x keras metrics pearson-correlation