我用非常漂亮的花朵尝试了这个最基本的例子。根据这个较老的问题(https://stackoverflow.com/a/41380178/6444605),有一些变化。但这个例子现在也是最新的吗?我问,因为我收到了这个错误:
classifier = skflow.DNNClassifier(hidden_units = [10,20,10], n_classes = 3)TypeError:_ _ init _ _()至少需要3个参数(3 给出)
这就是代码:
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)
答案 0 :(得分: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_columns
和hidden_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
答案 1 :(得分:0)
对此的另一个解决方案可能是:它是张量流版本0.8而不是实际的>所以只需切换这个小例子的版本。