我正在用Keras 2.02(带有Tensorflow后端)构建一个多类分类器,我不知道如何计算Keras中的精度和召回率.请帮我.
使用python 3.5.2 tensorflow rc 1.1
我正在尝试在keras中使用张量流度量函数。所需的功能接口似乎相同,但调用:
import pandas
import numpy
import tensorflow.contrib.keras as keras
import tensorflow
def target_function(row):
return float(row[0] - row[1] < 0.5)
df = pandas.DataFrame(numpy.random.rand(10000,2))
label = df.apply(target_function, axis=1)
input_layer = keras.layers.Input(shape=(2,))
net = keras.layers.Dense(1)(input_layer)
model = keras.models.Model(inputs=[input_layer], outputs=[net])
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[tensorflow.metrics.auc])
model.fit(df.as_matrix(), label.as_matrix(), epochs=10, validation_split=0.2, batch_size=100)
Run Code Online (Sandbox Code Playgroud)
结果与错误:
Using TensorFlow backend.
Traceback (most recent call last):
File "/Users/ophir/dev/ophir/tf_keras_metrics.py", line 49, in <module>
metrics=[precision, recall, tensorflow.metrics.auc]
File "/Users/ophir/anaconda3/envs/p3/lib/python3.5/site-packages/keras/engine/training.py", line 956, in compile
metric_result = masked_metric_fn(y_true, y_pred, mask=masks[i])
File "/Users/ophir/anaconda3/envs/p3/lib/python3.5/site-packages/keras/engine/training.py", …Run Code Online (Sandbox Code Playgroud) 我的理解是,keras要求损失函数具有签名:
def custom_loss(y_true, y_pred):
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用sklearn.metrics.cohen_kappa_score,需要(y1,y2,labels = None,weights = None,sample_weight = None)`
如果我按原样使用它:
model.compile(loss=metrics.cohen_kappa_score,
optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
然后,weights将不会设置。我想将其设置为quadtratic。有什么要通过这个吗?