首页 文章

DNNCLassifier Tensorflow上的label_keys类型错误

提问于
浏览
0

我想在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,steps = 200)文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/deprecation.py “,第281行,在new_func中返回func(* args,** kwargs)文件”/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py“ ,第430行,在fit loss = self._train_model(input_fn = input_fn,hooks = hooks)文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator .py“,第927行,_train_model model_fn_ops = self._get_train_ops(features,labels)File”/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator . py“,第1132行,在_get_train_ops中返回self._call_model_fn(features,labels,model_fn_lib.ModeKeys.TRAIN)文件”/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/ estimators / estimator.py“,第1103行,在_call_model_fn中model_fn_results = self._model_fn(功能,标签,* * kwargs)文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py”,第180行,在_dnn_model_fn中logits = logits)文件“/ usr /local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py“,第1004行,在create_model_fn_ops labels = self._transform_labels(mode = mode,labels = labels)文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py”,第1033行,在_transform_labels“label_ids”中:table.lookup(labels_tensor),File “/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/lookup/lookup_ops.py”,第179行,在查找中(self._key_dtype,keys.dtype))TypeError:签名不匹配 . 键必须是dtype

<dtype:'string'>,得到<dtype:'int64'>

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

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

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

1 回答

  • 1

    我得到了解决方案 . 正如官方文件所述here

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

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

相关问题