如何使用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/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()
答
如果看看其他有关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]:
答
使用功能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)
它发生在创建分类器的行中。 – Benjamin
'feature_columns'的形状和dtype是什么?我们也需要错误堆栈。 – hpaulj
完整的错误堆栈是: 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