1. 程式人生 > >8.4.2 時間序列預測——使用TFLearn自定義模型——程式碼執行錯誤及解決方法

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'