Tensorflow尝试使用未初始化的值AUC / AUC / auc / false_positives - python

我正在训练用于图像分类的CNN。由于数据集的大小有限,我正在使用转移学习。基本上,我使用的是Google在其再培训示例(https://www.tensorflow.org/tutorials/image_retraining)中证明的经过预先培训的网络。

该模型效果很好,并且具有非常好的准确性。但是我的数据集非常不平衡,这意味着准确性并不是判断模型性能的最佳指标。

通过研究不同的解决方案,有人建议更改采样方法或使用的性能指标。我选择与后者一起使用。

Tensorflow提供了很好的指标,包括AUC,精度,召回率等。

现在,这是追溯模型的代码:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py

我在add_evaluation_step(result_tensor, ground_truth_tensor)函数中添加了以下内容:

  with tf.name_scope('AUC'):
    with tf.name_scope('prediction'):
        prediction = tf.argmax(result_tensor, 1)
    with tf.name_scope('AUC'):
        auc_value = tf.metrics.auc(tf.argmax(ground_truth_tensor, 1), prediction, curve='ROC')


  tf.summary.scalar('accuracy', evaluation_step)
  tf.summary.scalar('AUC', auc_value)

但我收到此错误:

追溯(最近一次通话):文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/examples/image_retraining/retrain.py”,
1135行,在
tf.app.run(main = main,argv = [sys.argv [0]] +未分析)File“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/ python / platform / app.py”,
44行
_sys.exit(main(_sys.argv [:1] + flags_passthrough))文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/examples/image_retraining/retrain。 py”,
911线,在主
ground_truth_input:train_ground_truth})文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/client/session.py”,
767行,正在运行
run_metadata_ptr)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/client/session.py”,
_run中的第965行
feed_dict_string,选项,run_metadata)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/client/session.py”,
_do_run中的第1015行
target_list,选项,run_metadata)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/client/session.py”,
_do_call中的第1035行
提高type(e)(node_def,op,message)tensorflow.python.framework.errors_impl.FailedPreconditionError:
尝试使用未初始化的值AUC / AUC / auc / false_positives
[[节点:AUC / AUC / auc / false_positives / read = IdentityT = DT_FLOAT,
_class = [“ loc:@ AUC / AUC / auc / false_positives”],_ device =“ / job:localhost /副本:0 / task:0 / cpu:0”]]]

由op u'AUC / AUC / auc / false_positives / read'引起,定义于:文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/examples/image_retraining/retrain.py”,
1135行,在
tf.app.run(main = main,argv = [sys.argv [0]] +未分析)File“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/ python / platform / app.py”,
44行
_sys.exit(main(_sys.argv [:1] + flags_passthrough))文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/examples/image_retraining/retrain。 py”,
主线874
final_tensor,ground_truth_input)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/examples/image_retraining/retrain.py”,
第806行,位于add_evaluation_step中
auc_value,update_op = tf.metrics.auc(tf.argmax(ground_truth_tensor,1),预测,
curve ='ROC')文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/metrics_impl.py”,
555行,在auc中
标签,预测,阈值,权重)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/metrics_impl.py”,
第473行,位于_confusion_matrix_at_thresholds
false_p = _create_local('false_positives',shape = [num_thresholds])文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/metrics_impl.py”,
_create_local中的第177行
validate_shape = validate_shape)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/variables.py”,
226行,init
Expected_shape = expected_shape)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/variables.py”,
_init_from_args中的第344行
self._snapshot = array_ops.identity(self._variable,name =“ read”)文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/ops/gen_array_ops.py”,
1490行,身份
结果= _op_def_lib.apply_op(“ Identity”,input = input,name = name)文件
“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/framework/op_def_library.py”,
768行,位于apply_op中
op_def = op_def)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/framework/ops.py”,
第2402行,位于create_op中
original_op = self._default_original_op,op_def = op_def)文件“ /home/user_2/tensorflow/bazel-bin/tensorflow/examples/image_retraining/retrain.runfiles/org_tensorflow/tensorflow/python/framework/ops.py”,
1264行,init
self._traceback = _extract_stack()

FailedPreconditionError(请参阅上面的回溯):尝试使用
未初始化的值AUC / AUC / auc / false_positives [[Node:
AUC / AUC / auc / false_positives / read = IdentityT = DT_FLOAT,
_class = [“ loc:@ AUC / AUC / auc / false_positives”],_ device =“ / job:localhost /副本:0 / task:0 / cpu:0”]]]

但是我不明白为什么会这样,因为主要是这样的:

init = tf.global_variables_initializer()
sess.run(init)

参考方案

试试这个:

init = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
sess.run(init)

重命名TensorFlow估算器中的功能 - python

我正在使用固定的估算器,并从无法控制的来源读取数据。源代码使用snake_case存储功能,而我提供的预测功能始终在camelCase中,这也是我无法控制的。粗略地讲,我训练模型并将其导出,因此稍后可以阅读:features = ... # snake_case estimator = tf.estimator(DNNClassifier(feature_c…

Python:如何迭代20列并找到顶部的列? - python

我是新来的,也许我的问题很愚蠢,所以我提前致歉。基本上我有这样的数据,ID | Scope 1 | Scope 2 | Scope 3 | Scope 4 | ... | Scope 30| 1 | True | True | True | False | ... | True | 2 | True | True | True | False | ... |…

Tensorflow到ONNX的转换 - python

我目前正在尝试将通过本教程(https://github.com/thtrieu/darkflow)创建的已保存(正在工作)的.pb文件转换为onnx文件。我目前正在使用winML工具,但是转换的结果根本不起作用(输入参数错误+整个体系结构不正确)。我的输入参数(在自述文件的最底部指定):input:0输出节点:输出:0我想在HoloLens上运行的UWP应…

Tensorflow:具有num_parallel_calls的数据集映射没有加速 - python

我正在使用TensorFlow和tf.data.Dataset API执行一些文本预处理。在我的num_parallel_calls调用中不使用dataset.map时,预处理10K记录需要0.03s。当我使用num_parallel_trials=8(计算机上的内核数)时,也需要0.03s来预处理10K记录。我四处搜寻,发现了以下内容:Parallelis…

有没有一种方法可以有效地矢量化图像上的Tensorflow操作? - python

Tensorflow有大量的变换,可以应用于表示图像([高度,宽度,深度])(例如tf.image.rot90()或tf.image.random_flip_left_right())的3D张量。我知道它们应与队列一起使用,因此它们只能在一个图像上运行。但是,是否有一种方法可以对操作进行矢量化处理,以将4D张量([batch_size,height,widt…