我正在尝试创建一个DNNClassifier,但我不知道如何将数据传递给对象。我的数据文件是使用np.save()创建的.npy文件。
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/learn/python/learn/estimators/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()
答案 0 :(得分:1)
如果查看有关ValueError..
的其他SO问题,当您尝试对阵列进行某种True / False测试时,会出现这种情况。
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]:
答案 1 :(得分:0)
使用函数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)