2016-10-22 1 views
0

私が把握できないテンソルフローの形状エラーが発生しました。Tensorflow(tf.learn、DNNClassifier)を使用した形状エラー

アイリスtf.learnを使用してデータセットとともに、私は基本的なデモを実行した場合、それは次のようになります。

iris = datasets.load_iris() 
x_iris = iris.data 
y_iris = iris.target 
>>> x_iris.shape 
(150, 4) 
>>> y_iris.shape 
(150,) 
>>> type(x_iris) 
<class 'numpy.ndarray'> 

がよさそうです。私はこのコードを実行します:

feature_columns = [ tf.contrib.layers.real_valued_column("", dimension = 4) ] 
classifier = tf.contrib.learn.DNNClassifier(feature_columns = feature_columns, hidden_units = [ 10, 20, 10 ], n_classes = 3, model_dir = "/tmp/iris_model") 
classifier.fit(x = x_iris, y = y_tiris, steps = 2000) 

それは素晴らしいです!だからそれは良いです。

>>> x_titanic.shape 
(700, 14) 
>>> y_titanic.shape 
(700,) 
>>>type(x_titanic) 
<class 'numpy.ndarray'> 

同じ形状、同じ種類:

は今、私は私がKaggleで各地からで働いてきたタイタニックデータセットとまったく同じ状況があります。大丈夫なはず。私は、同じコードを実行します。

feature_columns = [ tf.contrib.layers.real_valued_column("", dimension = 14) ] 
classifier = tf.contrib.learn.DNNClassifier(feature_columns = feature_columns, hidden_units = [ 10, 20, 10 ], n_classes = 2, model_dir = "/tmp/iris_model") 
classifier.fit(x = x_titanic, y = y_titanic, steps = 2000) 

をそして、私はこのエラーを取得する:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py", line 435, in fit 
    max_steps=max_steps) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 333, in fit 
    max_steps=max_steps) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 662, in _train_model 
    train_op, loss_op = self._get_train_ops(features, targets) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 963, in _get_train_ops 
    _, loss, train_op = self._call_model_fn(features, targets, ModeKeys.TRAIN) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 944, in _call_model_fn 
    return self._model_fn(features, targets, mode=mode, params=self.params) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py", line 258, in _dnn_classifier_model_fn 
    weight=_get_weight_tensor(features, weight_column_name)) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/contrib/losses/python/losses/loss_ops.py", line 329, in sigmoid_cross_entropy 
    logits.get_shape().assert_is_compatible_with(multi_class_labels.get_shape()) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/framework/tensor_shape.py", line 750, in assert_is_compatible_with 
    raise ValueError("Shapes %s and %s are incompatible" % (self, other)) 
ValueError: Shapes (?, 1) and (?,) are incompatible 

これはなぜでしょうか?原因それは(0,1)だけのバイナリだが、それはDNNClassifierのデフォルトだという事実に

sigmoid_cross_entropy 
logits.get_shape().assert_is_compatible_with(multi_class_labels.get_shape()) 

:y_titanicの形状に問題があるように見えます。私は変えなければならない何か特別なものはありますか? yベクトルをtf.one_hotする必要がありますか?

答えて

0

それはまだ固定取得することができる既知の問題であり、次のようになります

https://github.com/tensorflow/tensorflow/issues/4715

は私が3「n_classes」を変更し、問題が消えたが - あまりにも、良好な性能を持って!まだ100%確実ではないなぜこれが起こったのですか?修正プログラムは、このバグを修正します、hereに11日前に私は私のtensorflowを更新しなければならないことを意味https://github.com/tensorflow/tensorflow/commit/b718fd6ad8cebc470fcc7e53bb6902168edd5587

...

0

行かせた、最新WHLファイルをダウンロードしていたよう

が見えます。

関連する問題