如何使用numpy数组提供DNNClassifier

问题描述:

我想创建一个DNNClassifier,但我不知道如何将数据传递到object.My数据文件是使用np.save()创建的.npy文件。如何使用numpy数组提供DNNClassifier

  • 训练数据:形状数组(106398,338)其中106398是数据实例数。
  • 训练标签:形状(106398,97)其中97是,我想预测的类的数量的阵列(在热编码)

import tensorflow as tf 
from tensorflow.contrib.learn import DNNClassifier 
import numpy as np 

feature_columns = np.load(path_to_file)#learn.infer_real_valued_columns_from_input(iris.data) 
feature_tags=np.load(path_to_other_file) 

classifier = DNNClassifier(hidden_units=[10, 20, 10], n_classes=97, feature_columns=feature_columns) 
classifier.fit(feature_columns, feature_tags, steps=200, batch_size=1000) 

predictions = list(classifier.predict(feature_columns, as_iterable=True)) 
score = metrics.accuracy_score(feature_tags, predictions) 

print("Accuracy: %f" % score) 

和获取:ValueError异常:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

我试图使两个(feature_columns和feature_tags)成为tf.constant机器人它不起作用。

我该如何解决?


8.0 locally Traceback (most recent call last): 
File "nueva.py", line 31, 
    in <module> classifier = DNNClassifier(hidden_units=[10, 20, 10], n_classes=97, feature_columns=feature_columns) 
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/l‌​earn/python/learn/es‌​timators/dnn.py", line 296, 
    in init self._feature_columns = tuple(feature_columns or []) 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

如果看看其他有关ValueError..你会认为出现这种情况,当你尝试做一些阵列上的真/假测试做题。

if X>0:.... 

如果X是一个多元素数组,则会产生此错误。然后X>0是一个True/False值的数组。这是含糊不清的。

确定了基本问题之后,我们需要找出您正在做什么样的测试。

另一件事 - 当报告一个错误,也报告堆栈 - 这个错误发生在哪里?

看着你的代码,我没有看到任何可能触发这个错误的测试。这意味着它发生在你所称呼的某个功能的深处。 哪个?

我猜一个函数参数有错误的形式,形状或类型。


错误发生在tuple(feature_columns or [])表达式中。您的feature_columns参数不应该是数组。检查文档。

从那个表情,我猜应该feature_columns默认None,或像[1,2,3]列表:

In [110]: [1,2,3] or [] 
Out[110]: [1, 2, 3] 
In [111]: None or [] 
Out[111]: [] 
In [112]: np.array([1,2,3]) or [] 
.... 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 
In [113]: 
+0

它发生在创建分类器的行中。 – Benjamin

+0

'feature_columns'的形状和dtype是什么?我们也需要错误堆栈。 – hpaulj

+0

完整的错误堆栈是: 8。0本地 回溯(最近最后调用): 文件 “nueva.py”,第31行,在 分类= DNNClassifier(hidden_​​units = [10,20,10],n_classes = 97,feature_columns = feature_columns) 文件“ /usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py“,第296行,在__init__中 self._feature_columns =元组(feature_columns或[]) ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all() 并且feature_columns的形状是(106398,338)并且是一个浮点数组。 – Benjamin

使用功能learn.infer_real_valued_columns_from_input从numpy的阵列创建feature_columns。以下解决方案适用于我:

X = np.load(path_to_file) 
feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input(X) 
classifier = DNNClassifier(hidden_units=[10, 20, 10], n_classes=97, feature_columns=feature_columns)