我想检索y_pred和y_true定制Keras指标内的平等len(x)
和x.shape[0]
,而无需使用任何东西,但Keras后端。
考虑一个最小Keras指标例如:
from keras import backend as K
def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
这里y_pred和y_true是代表特定形状的numpy的阵列张量。
如何获得keras度量函数内的底层数组的长度,使得所得代码将在以下形式:
def binary_accuracy(y_true, y_pred):
# some Keras backend code
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
注:该代码必须是Keras后端代码,以便它可以在任何Keras后端。
我已经尝试过K.ndim(y_pred)
即使长度为45实际上与K.int_shape(y_pred)
返回无返回2。
你需要记住的是,在某些情况下,给予象征性的张量的形状(例如y_true和你的情况y_pred)不能确定,直到你给值,以特定的占位符,这个张量依赖。
牢记这一点,你有两个选择:
if K.shape(x)[0] == 5:
...
else:
...
K.shape(x)
获取表示张量X形符号张量。要使用张量的形状来改变你的TF图,e.g这是非常有用的情况:
t = tf.ones(shape=K.shape(x)[0])
您可以通过K.int_shape(x)
访问张量的形状通过取结果的第一个值,你会得到下面的数组的长度:K.int_shape(x)[0]