问题描述
我正在尝试创建DNNClassifier,但是我不知道如何将数据传递到对象中。我的数据文件是使用np.save()创建的.npy文件。
- 训练数据:形状数组(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 bot,但它不起作用。
我该如何解决?
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()
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]:
2楼
使用函数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)