加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – TensorFlow“tf.estimator Quickstart”示例不会产生

发布时间:2020-12-20 13:19:37 所属栏目:Python 来源:网络整理
导读:我刚开始用TensorFlow和 Python练习.我复制并执行了TensorFlow网站 tf.estimator Quickstart页面中的代码: from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport osimport urllibimport num
我刚开始用TensorFlow和 Python练习.我复制并执行了TensorFlow网站 tf.estimator Quickstart页面中的代码:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os
import urllib

import numpy as np
import tensorflow as tf

# Data sets
IRIS_TRAINING = "iris_training.csv"
IRIS_TRAINING_URL = "http://download.tensorflow.org/data/iris_training.csv"

IRIS_TEST = "iris_test.csv"
IRIS_TEST_URL = "http://download.tensorflow.org/data/iris_test.csv"


def main():
    # If the training and test sets aren't stored locally,download them.
    if not os.path.exists(IRIS_TRAINING):
        raw = urllib.urlopen(IRIS_TRAINING_URL).read()
        with open(IRIS_TRAINING,"w") as f:
            f.write(raw)

    if not os.path.exists(IRIS_TEST):
        raw = urllib.urlopen(IRIS_TEST_URL).read()
        with open(IRIS_TEST,"w") as f:
            f.write(raw)

    # Load datasets.
    training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
        filename=IRIS_TRAINING,target_dtype=np.int,features_dtype=np.float32)
    test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
        filename=IRIS_TEST,features_dtype=np.float32)

    # Specify that all features have real-value data
    feature_columns = [tf.feature_column.numeric_column("x",shape=[4])]

    # Build 3 layer DNN with 10,20,10 units respectively.
    classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,hidden_units=[10,10],n_classes=3,model_dir="/tmp/iris_model")
    # Define the training inputs
    train_input_fn = tf.estimator.inputs.numpy_input_fn(
        x={"x": np.array(training_set.data)},y=np.array(training_set.target),num_epochs=None,shuffle=True)

    # Train model.
    classifier.train(input_fn=train_input_fn,steps=2000)

    # Define the test inputs
    test_input_fn = tf.estimator.inputs.numpy_input_fn(
        x={"x": np.array(test_set.data)},y=np.array(test_set.target),num_epochs=1,shuffle=False)

    # Evaluate accuracy.
    accuracy_score = classifier.evaluate(input_fn=test_input_fn)["accuracy"]

    print("nTest Accuracy: {0:f}n".format(accuracy_score))

    # Classify two new flower samples.
    new_samples = np.array(
        [[6.4,3.2,4.5,1.5],[5.8,3.1,5.0,1.7]],dtype=np.float32)
    predict_input_fn = tf.estimator.inputs.numpy_input_fn(
        x={"x": new_samples},shuffle=False)

    predictions = list(classifier.predict(input_fn=predict_input_fn))
    predicted_classes = [p["classes"] for p in predictions]

    print(
        "New Samples,Class Predictions:    {}n"
            .format(predicted_classes))


if __name__ == "__main__":
    main()

根据教程,输出应该是

Test Accuracy: 0.966667

New Samples,Class Predictions: [1 2]

我的问题是我执行源代码给出的输出是

Test Accuracy: 0.966667

New Samples,Class Predictions: [array([b’1′],dtype=object),array([b’1′],dtype=object)]

不幸的是,我对TensorFlow或Python的经验不足以了解问题所在.我可以做的唯一猜测是一些兼容性问题,但我在TensorFlow网站上的tutorial之后安装了Python 3.5 for Windows.

解决方法

因为这里的predict_classes是一个dtype对象的数组.

您可以尝试使用np.concatenate(predict_classes).astype(np.int)将对象转换为int.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读