如何将F1指标添加到Tensorflow多类DNN分类器

时间:2019-01-21 03:10:22

标签: python tensorflow machine-learning neural-network

我试图将f1分数添加到tensorflow上的固定DNNClassifier中。尝试使用tf.contrib.estimator.add_metrics函数添加f1_score指标时,我认为有3个引起问题的标签。

我得到以下错误:Shapes(?,3)和(?,1)不兼容。我很茫然,将不胜感激。

  

文件“ C:\ Python36 \ lib \ site-packages \ tensorflow \ python \ ops \ metrics_impl.py”,行116,以_remove_squeezable_dimensions       projections.get_shape()。assert_is_compatible_with(labels.get_shape())     在assert_is_compatible_with中的第848行的文件“ C:\ Python36 \ lib \ site-packages \ tensorflow \ python \ framework \ tensor_shape.py”       引发ValueError(“形状%s和%s不兼容”%(自我,其他))   ValueError:形状(?,3)和(?,1)不兼容

我有以下代码:

   def my_f1(features, labels, predictions):
         return {'auc': tf.contrib.metrics.f1_score(
                 labels, predictions['logits'], weights=features['weight'])}






    est = tf.estimator.DNNClassifier(feature_columns=feature_columns,
                                 n_classes=3,
                                 config=tf.estimator.RunConfig(
                                     save_checkpoints_steps=100,
                                     keep_checkpoint_max=5000,
                                 ),
                                 activation_fn=tf.nn.leaky_relu,
                                 optimizer=tf.train.FtrlOptimizer(
                                     learning_rate=0.01,
                                     l1_regularization_strength=0.005
                                 ),
                                 weight_column='weight',
                                 dropout=0.5,
                                 hidden_units=[800, 450, 200, 100, 50],
                                 model_dir="D:/Stock Data/NeuralNetwork2"
                                 )
    est = tf.contrib.estimator.add_metrics(est, my_f1)

0 个答案:

没有答案