2017-08-16 60 views
2

我已經用非常漂亮的花朵試過了這個最基本的例子。根據這個舊的問題(https://stackoverflow.com/a/41380178/6444605),有一些變化。但是這個例子現在是最新的嗎?我問,因爲我得到這個錯誤:Tensorflow-example with flowers

classifier = skflow.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3) TypeError: _ _ init _ _() takes at least 3 arguments (3 given)

這是代碼:

import tensorflow.contrib.learn as skflow 
from sklearn import datasets, metrics 
iris = datasets.load_iris() 
# made a change in the next line 
classifier = skflow.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3) 
classifier.fit(iris.data, iris.target) 
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data)) 

print("Accuracy: %f" % score) 

回答

3

我認爲你需要告訴在特徵:

classifier = skflow.DNNClassifier(feature_columns=..., hidden_units=[10, 20, 10], n_classes=3) 

,你需要定義特徵列,例如feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)],它告訴分類器它應該期望4列具有實數。

由於skflow已經移動到tf.contrib.learn,你可能會有所幫助:https://www.tensorflow.org/api_docs/python/tf/contrib/learn/DNNClassifier 反正feature_columnshidden_units是在函數調用強制性的。

我遇到了一些錯誤metrics.accuracy_score(),所以我用classifier.evaluate()取代了它,終於搞定了。

下面參見一個完整的例子:

import tensorflow as tf 
import tensorflow.contrib.learn as skflow 
from sklearn import datasets 

iris = datasets.load_iris() 
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)] 
# made a change in the next line 
classifier = skflow.DNNClassifier(feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3) 

classifier.fit(iris.data, iris.target, steps=50) 

score = classifier.evaluate(iris.data, iris.target, steps=1)["accuracy"] 
print("Accuracy: {}".format(score)) 

更擴展的例子可以在這裏找到:https://www.tensorflow.org/get_started/tflearn

+0

變化很大,thx。 – gwf

0

另一解決方案,這可能是:這是tensorflow版本0.8,而不是實際> 1。所以只需切換這個小例子的版本。

+0

如何切換到另一個TF版本? – harrypotter0