Tensorflow 2.0 Keras深度学习模型指标无法编译多类精度和召回率

时间:2019-10-02 18:22:28

标签: tensorflow keras deep-learning multiclass-classification precision-recall

我想计算每个班级的精度和召回率,而不仅仅是一个。我知道tensorflow.keras.metricsPrecisionRecall,它们可以占用class_id。但是,如果我想将这些指标用于多个class_id,则无法编译我的模型。如果我只有class_id = 0,它将编译并运行。 当我为Recall包含Precisionclass_id = 1时,会发生以下情况。

这是什么问题?我该如何解决?非常感谢您的帮助。

仅使用一个class_id即可成功编译和训练。但是,当我为指标添加另一个class_id时,它将不起作用。

vocab_size = len(word_index)
embedding_dimension = 16

with strategy.scope():
  model = tf.keras.Sequential()
  model.add(tf.keras.layers.Embedding(vocab_size, embedding_dimension, input_length=max_sentence_length))
  model.add(tf.keras.layers.SpatialDropout1D(0.3))
  model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(128)))
  model.add(tf.keras.layers.Dense(2, activation='softmax'))
  model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy',
                                       Recall(class_id=0, name='recall_0'),   
                                       Precision(class_id=0, name='precision_0'),
                                       Recall(class_id=1, name='recall_1'),
                                       Precision(class_id=1, name='precision_1')
      ])

INFO:tensorflow:Error reported to Coordinator: slice index 1 of dimension 1 out of bounds. for 'metrics_14/recall_1/strided_slice_1' (op: 'StridedSlice') with input shapes: [?,1], [2], [2], [2] and with computed input tensors: input[1] = <0 1>, input[2] = <0 2>, input[3] = <1 1>. 

我希望它能够以多级精度和调用率成功编译。

0 个答案:

没有答案