【问题标题】:label_keys type error on DNNCLassifier TensorflowDNNCLassifier Tensorflow 上的 label_keys 类型错误
【发布时间】:2017-10-28 09:08:21
【问题描述】:

我想将标签嵌入到 Tensorflow 中的 DNNClassifier 模型中。 与文档示例 here 不同,我收到以下错误消息:

label_keys_values = ["satan", "ipsweep", "nmap", "portsweep"]  
m = tf.contrib.learn.DNNClassifier(model_dir=model_dir,
                                  feature_columns=deep_columns,
                                  n_classes=4,
                                  hidden_units=[12, 4],
                                  label_keys=label_keys_values)
m.fit(input_fn=train_input_fn, steps=200)

文件“embedding_model_probe.py”,第 118 行,在 m.fit(input_fn=train_input_fn, 步数=200) 文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/deprecation.py”,第 281 行,在 new_func 返回函数(*args,**kwargs) 文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第 430 行,适合 损失 = self._train_model(input_fn=input_fn, hooks=hooks) _train_model 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第 927 行 model_fn_ops = self._get_train_ops(特征,标签) _get_train_ops 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第 1132 行 return self._call_model_fn(特征,标签,model_fn_lib.ModeKeys.TRAIN) _call_model_fn 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第 1103 行 model_fn_results = self._model_fn(特征,标签,**kwargs) _dnn_model_fn 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py”,第 180 行 对数=对数) 文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py”,第 1004 行,在 create_model_fn_ops 标签 = self._transform_labels(模式=模式,标签=标签) _transform_labels 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py”,第 1033 行 “label_ids”:table.lookup(labels_tensor), 查找中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/lookup/lookup_ops.py”,第 179 行 (self._key_dtype,keys.dtype)) 类型错误:签名不匹配。键必须是 dtype

,得到

另一方面,如果我将label_key_values 列设为numpy.array,我将收到以下错误:

label_keys_values = np.array(["satan", "ipsweep", "nmap", "portsweep"], dtype='string')

Traceback(最近一次调用最后一次): 文件“embedding_model_probe.py”,第 116 行,在 标签键=标签键值) init 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py”,第 337 行 标签键=标签键), 文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py”,第 331 行,在 multi_class_head 标签键=标签键) init 中的文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py”,第 986 行 如果 label_keys 和 len(label_keys) != n_classes: ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

【问题讨论】:

    标签: python-2.7 numpy machine-learning tensorflow neural-network


    【解决方案1】:

    我得到了解决方案。正如官方文档所说here

    "如果用户在构造函数中指定 label_keys,则标签必须是 label_keys 词汇表中的字符串。"

    在我的例子中,我将训练和测试集中的标签列转换为一个单热向量(整数值),label_keys_values 数组中的值与它们不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2019-06-02
      • 2018-09-13
      • 2018-06-14
      • 2018-12-16
      • 2017-04-03
      相关资源
      最近更新 更多