代码之家  ›  专栏  ›  技术社区  ›  user1563247

带Tensorflow的MNIST,值错误

  •  0
  • user1563247  · 技术社区  · 8 年前

    我正在尝试使用Tensorflow遍历MNIST数据集。这是我的密码

    import tensorflow as tf
    import numpy as np
    
    from tensorflow.examples.tutorials.mnist import input_data
    mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
    
    X_train = np.array(mnist.train.images, 'float')
    X_test = np.array(mnist.test.images, 'float')
    y_train = np.array(mnist.train.images, 'int32')
    y_test = np.array(mnist.test.images, 'int32')
    
    # Specify feature
    feature_columns = [tf.contrib.layers.real_valued_column('', dimension=784)]
    
    # Build 3 layer DNN with 10, 20, 10 units respectively.
    classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, 
                                                hidden_units=[200, 100, 60, 30], 
                                                n_classes=10,
                                                model_dir="./output"
                                                )
    
    # Fit model.
    classifier.fit(X_train, y_train, batch_size=100, steps=1000)
    
    # Evaluate accuracy.
    accuracy_score = classifier.evaluate(X_test, y_test)["accuracy"]
    
    print('Accuracy: {0:f}'.format(accuracy_score))
    

    然而,我不断发现错误:

    ValueError:无法挤压尺寸[1],预期尺寸为1,获得784 对于“dnn/multi\u class\u head/softmax\u cross\u entropy\u loss/Squence”(操作: “挤压”),输入形状:[?,784]。

    回溯让我注意到第31行,在那里我在分类器上调用fit(),但我不知道为什么。

    1 回复  |  直到 8 年前
        1
  •  0
  •   jrjames83    8 年前

    这应该可以正常工作。 版本 =“1.1.0”,并使用python 3.6。输入数据的维度可能存在一些问题,但请从这个角度进行反向操作。

    import tensorflow as tf
    from tensorflow.examples.tutorials.mnist import input_data
    import numpy as np
    
    mnist_data = "save/here/mnist"
    
    MNIST_DATASET = input_data.read_data_sets(mnist_data)
    
    train_data = np.array(MNIST_DATASET.train.images, 'float32')
    train_target = np.array(MNIST_DATASET.train.labels, 'int64')
    
    test_data = np.array(MNIST_DATASET.test.images, 'float32')
    test_target = np.array(MNIST_DATASET.test.labels, 'int64')
    
    feature_columns = [tf.contrib.layers.real_valued_column("", dimension=784)]
    
    classifier = tf.contrib.learn.DNNClassifier(
        feature_columns=feature_columns
        ,n_classes=10
        ,hidden_units=[128, 32]
    )
    
    classifier.fit(train_data, train_target, steps=5)
    accuracy_score = classifier.evaluate(test_data, test_target, steps=5)['accuracy']
    print("accuracy: ", 100*accuracy_score,"%")
    

    输出:

    WARNING:tensorflow:Skipping summary for global_step, must be a float or np.float32.
    accuracy:  44.3899989128 %
    
    推荐文章