2017-02-16 3 views
0

DNNClassifierを作成しようとしていますが、データをオブジェクトに渡す方法がわかりません。データファイルはnp.save()で作成された.npyファイルです。DNNClassifierにnumpy配列を与える方法

  • トレーニングデータ:形状の配列(106398,338)ここで、106398はデータのインスタンス数です。
  • トレーニングラベル:(ホットエンコーディングで)私は予測したいクラスの数が97形(106398,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() 

答えて

0

あなたは、アレイ上のいくつかの並べ替え真/偽のテストをしようとするとき、これが発生していることよValueError..それについて他のSOの質問を見れば。

Xがマルチエレメント配列の場合、このエラーが発生します。 X>0はTrue/False値の配列です。それはあいまいです。

基本的な問題が特定されたので、次にそのようなテストを行っている場所を見つける必要があります。

もう1つのこと - エラーを報告するときにスタックにも報告してください - このエラーはどこで起こりますか?

コードを見ると、このエラーが発生する可能性のあるテストはありません。これは、あなたが呼んでいる機能の一つの中で深く起こっていることを意味します。 どちらですか?

私は、関数の引数の1つが間違った形式、形または型を持っていると推測しています。


エラーはtuple(feature_columns or [])という表現になっています。 feature_columnsパラメータは配列であってはなりません。ドキュメントを確認してください。

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

完全なエラースタックは です。0ローカル トレースバック(最新の呼び出しの最後): クラシファイア= DNNClassifier(hidden_​​units = [10、20、10]、n_classes = 97、feature_columns = feature_columns) ファイル」で ファイル "nueva.py"、ライン31、 /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

0

numpyの配列からfeature_columnsを作成する機能learn.infer_real_valued_columns_from_inputを使用します。その式から

は、私はfeature_columnsがデフォルトNone、または[1,2,3]ようなリストべきであると推測しています。次の解決策は私のために働きます:

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) 
関連する問題