《TensorFlow》:实战Google深度学习框架中第八章的——8.4.2 时间序列预测——使用TFLearn自定义模型下的源代码运行报错:
原因分析:
score=metrics.accuracy_score(y_test,y_predicted)该句代码中y_predicted是tflearn中的generator类型,
而不是metrics.accuracy_score计算accuracy所需要sequence(序列)或者array-like(类数组)类型的数据;
问题解决:
在y_predicted=classifier.predict(x_test)后加:
y_predicted = list(y_predicted),
将其转化为list(列表类型)即可
# -*- coding: utf-8 -*-
from sklearn import cross_validation
from sklearn import datasets
from sklearn import metrics
import tensorflow as tf
# import tflearn
learn = tf.contrib.learn
def my_model(features,target):
target = tf.one_hot(target,3,1,0)
logits,loss = learn.models.logistic_regression(features,target)
train_op = tf.contrib.layers.optimize_loss(
loss,
tf.contrib.framework.get_global_step(),
optimizer='Adagrad',
learning_rate=0.1)
return tf.arg_max(logits,1),loss,train_op
iris=datasets.load_iris()
x_train,x_test,y_train,y_test=cross_validation.train_test_split(
iris.data,iris.target,test_size=0.2,random_state=0)
classifier=learn.Estimator(model_fn=my_model)
classifier.fit(x_train,y_train,steps=100)
y_predicted=classifier.predict(x_test)
y_predicted = list(y_predicted)
score=metrics.accuracy_score(y_test,y_predicted)
print ('Accuracy: %.2f%%'%(score*100))
运行环境:
(1)Python 3.5.2 |Anaconda 4.2.0 (64-bit)
(2)tensorflow '1.0.1'
(3)sklearn '0.18.1'