私が把握できないテンソルフローの形状エラーが発生しました。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する必要がありますか?