我是 keras 新手,我想用 F1-score 作为指标来训练模型。
\n\n我遇到了两件事,一是我可以添加回调,二是使用内置的指标函数\n这里,它说指标函数将不会用于训练模型。那么,这是否意味着我可以metrics在编译模型时进行任何争论?\n具体来说,
model.compile(optimizer=\'rmsprop\',\n loss=\'binary_crossentropy\',\n metrics=[\'accuracy\'])\nRun Code Online (Sandbox Code Playgroud)\n\n在上述情况下,即使准确性作为指标传递,它也不会用于训练模型。
\n\n第二件事是使用此处定义的回调,
\n\nimport numpy as np\nfrom keras.callbacks import Callback\nfrom sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score\nclass Metrics(Callback):\ndef on_train_begin(self, logs={}):\n self.val_f1s = []\n self.val_recalls = []\n self.val_precisions = []\n\ndef on_epoch_end(self, epoch, logs={}):\n val_predict = (np.asarray(self.model.predict(self.model.validation_data[0]))).round()\n val_targ = self.model.validation_data[1]\n _val_f1 = f1_score(val_targ, val_predict)\n _val_recall = recall_score(val_targ, val_predict)\n _val_precision = precision_score(val_targ, val_predict)\n self.val_f1s.append(_val_f1)\n self.val_recalls.append(_val_recall)\n self.val_precisions.append(_val_precision)\n print \xe2\x80\x9c \xe2\x80\x94 val_f1: %f \xe2\x80\x94 val_precision: %f \xe2\x80\x94 val_recall %f\xe2\x80\x9d …Run Code Online (Sandbox Code Playgroud)