2017-08-16 97 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