简单的tensorflow + tflearn神经网络出现“无法提供形状值”错误

时间:2018-08-24 13:38:35

标签: python tensorflow tflearn

我见过一些有类似错误的人,但是似乎没有一个人适合我,而且作为一个相对较新的Python人,这一切都令人困惑。

我正在使用Tensorflow + TFLearn尝试建立一个非常简单的网络,该网络可以根据给定的类型,产地和年份来预测鳄梨的价格(不要问),并且不断抛出错误:< / p>

Cannot feed value of shape (10, 500) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'

我将n_class设置为500,因为我使用的是更高的数字,如果数值太低,它将不断抛出错误,但是据我了解,这不是因为它与“形状”有关“,但我真的不知道那是什么意思。

我将粘贴完整的代码,如果这是一个不好的问题/一个简单的问题,很抱歉,我对此并不陌生,有些困惑。

data, labels = tflearn.data_utils.load_csv('avocado.csv',
                                               target_column=2,
                                               categorical_labels=True,
                                               n_classes=500,
                                               columns_to_ignore=[0,1,3,4,5,6,7,8,9,10])
    for type in data:
        if type[0] == "conventional":
            type[0] = 1
        else:
            type[0] = 0

    for place in data:
        if place[2] == "Albany":
            place[2] = 0
        elif place[2] == "Atlanta":
            place[2] = 1
        elif place[2] == "BaltimoreWashington":
            place[2] = 2
        elif place[2] == "Boise":
            place[2] = 3
        elif place[2] == "Boston":
            place[2] = 4
        elif place[2] == "BuffaloRochester":
            place[2] = 5
        elif place[2] == "California":
            place[2] = 6
        elif place[2] == "Charlotte":
            place[2] = 7

    #this goes on for a while, just converting strings to int to work 
    #with TFLearn

    print(data[0])
    # define the input layer
    # 3 because we have 3 columns in the data set (year, location, and type)
    net = tflearn.input_data(shape=[None, 3])

    # adding hidden layers
    net = tflearn.fully_connected(net, 32)
    net = tflearn.fully_connected(net, 32)

    # the output layer
    net = tflearn.fully_connected(net, 1, activation="softmax")

    net = tflearn.regression(net)

    # define model
    model = tflearn.DNN(net)

    # start training
    model.fit(data, labels, n_epoch=10, batch_size=10, show_metric=True)

在此先感谢您的帮助,如果这是一个愚蠢的问题,再次表示歉意。

1 个答案:

答案 0 :(得分:0)

您的示例代码以及问题描述似乎与回归有关,但是您已经设置了categorical_labels=True并与n_classes=500一起将鳄梨价格视为具有500个不同可能值的分类变量(而不是连续变量)。这将创建500个类的一热点向量,该向量与网络的最后一层(具有一个输出节点而不是500)不兼容。 对于您的回归问题,您应该设置categorical_labels=False,并且可以完全省略n_classes