8.4.2 时间序列预测——使用TFLearn自定义模型——代码运行错误及解决方法

《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'

 

猜你喜欢

转载自blog.csdn.net/sdnuwjw/article/details/78700862
今日推荐