на этом, чтобы получить конкретный прогнозируемый ярлык. По сути, вы должны выполнять операции самостоятельно в тензорном потоке. Это ни для кого не сделано.

раюсь следовать документу tenorflow API 1.4, чтобы достичь того, что мне нужно в процессе обучения.

Я сейчас на этом этапе могу выдать прогнозируемый объект, например:

classifier = tf.estimator.DNNClassifier(feature_columns=feature_cols,hidden_units=[10, 20, 10], n_classes=3, model_dir="/tmp/xlz_model")

predict = classifier.predict(input_fn=input_pd_fn_prt (test_f),predict_keys=["class_ids"])
label =tf.constant(test_l.values, tf.int64)

как я могу использовать прогнозирование и метку вtf.metrics.auc например:

out, opt = tf.metrics.auc(label, predict)

Я пробовал так много разных вариантов. нет четкой документации, как можно использовать эти API-интерфейсы тензорного потока.

Ответы на вопрос(1)

Функция возвращает 2 операции:

auc, update_op = tf.metrics.auc(...)

Если вы бежитеsess.run(auc) Вы получите текущее значение auc. Это значение, о котором вы хотите сообщить, например,print sess.run([auc, cost], feed_dict={...}).

Метрика AUC может потребоваться вычислить по многим вызовамsess.run, Например, когда набор данных, для которого вы вычисляете AUC, не помещается в память. Вот гдеupdate_op приходит. Вы должны вызывать его каждый раз, чтобы накопить значения, необходимые для вычисленияauc.

Таким образом, во время оценки тестового набора вы можете получить следующее:

for i in range(num_batches):
    sess.run([accuracy, cost, update_op], feed_dict={...})

print("Final (accumulated) AUC value):", sess.run(auc))

Если вы хотите сбросить накопленные значения (например, перед повторной оценкой тестового набора), вам следует повторно инициализировать локальные переменные.tf.metrics Пакет мудро добавляет свои переменные-аккумуляторы в коллекцию локальных переменных, в которую по умолчанию не входят обучаемые переменные, такие как веса.

sess.run(tf.local_variables_initializer())  # Resets AUC accumulator variables

https://www.tensorflow.org/api_docs/python/tf/metrics/auc

 Robert Zhou13 нояб. 2017 г., 19:13
Да, спасибо. Я думаю, что tf.metrics.auc как API, вы передаете метку и прогнозируемые значения из модели, она возвращает значение auc. Мой вопрос заключается в том, как извлечь прогнозируемые значения из моделей оценки, таких как DNNClassifier, которые можно использовать для tf.metrics.auc. В документации по tenorflow API не документируется, что возвращает функцияrealt () и как использовать возвращаемые значения. Например, мне нужно отладить, чтобы выяснить, что предикат DNNClassifier возвращает вероятности, class_ids, классы ... Другие люди могут использовать DNNClassifier, только найдя несколько примеров или углубившись в реализацию.
 David Parks13 нояб. 2017 г., 19:29
Тогда вы обычно бегаетеtf.argmax на этом, чтобы получить конкретный прогнозируемый ярлык. По сути, вы должны выполнять операции самостоятельно в тензорном потоке. Это ни для кого не сделано.
 David Parks13 нояб. 2017 г., 19:29
Tensorflow - это библиотека общего назначения, она не работает как SciKit Learn, здесь нет высокоуровневой функции прогнозирования, которая бы ограничивала вас конкретной реализацией. Ваши прогнозируемые значения являются ОП на выходном уровне вашей сети. Если вы используете функцию Softmax / Cross Entropy Loss, вы, вероятно, передаете в верхний слой сетиtf.softmax_cross_entropy_with_logits, чтобы получить прогнозы, просто используйте значение, которое вы передали туда и применитьtf.nn.softmax чтобы получить прогнозируемое распределение.
 Robert Zhou11 нояб. 2017 г., 18:07
Дэвид, спасибо за ваши комментарии. То, что я пытаюсь сделать прямо сейчас, - это выяснить, как работает тензор потока API, архитектура. Итак, тестирование кода с помощью tf.InteractiveSession (). Я запускаю и отлаживаю: pr = classifier.predict (input_fn = input_pd_fn_prt (test_f)). Я вижу значения в pr. Затем я пытаюсь использовать tf.metrics.auc с pr и label для получения информации об auc. затем на этапе я получаю сообщение об ошибке: AttributeError: объект «генератор» не имеет атрибута «dtype». точность, update_op = tf.metrics.auc (label, pr) Прогноз должен возвращать оценочные результаты в pr, верно? как я могу использовать pr infor для tf.metrics.auc.
 David Parks11 нояб. 2017 г., 20:26
Нет, ваши прогнозы не переписываютсяtf.metrics.auc,tf.metrics.auc Функция создает новые переменные, которые накапливаютсяtrue_positives, true_negatives, а такжеfalse_positives, Эти переменные вам не возвращаются, но если вы отобразите свой график на тензорной доске, вы увидите их. Когда вы запрашиваетеauc тензор (вычисленное значение, а не переменная), он вычисляет auc метрику из этих переменных аккумулятора.update_op операция вычисляет tp, tn, fp, изpr а такжеlabel и обновляет переменные аккумулятора соответствующим образом. Ни разуpr или жеlabel изменилось.

Ваш ответ на вопрос