我见过一些有类似错误的人,但是似乎没有一个人适合我,而且作为一个相对较新的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)
在此先感谢您的帮助,如果这是一个愚蠢的问题,再次表示歉意。
答案 0 :(得分:0)
您的示例代码以及问题描述似乎与回归有关,但是您已经设置了categorical_labels=True
并与n_classes=500
一起将鳄梨价格视为具有500个不同可能值的分类变量(而不是连续变量)。这将创建500个类的一热点向量,该向量与网络的最后一层(具有一个输出节点而不是500)不兼容。
对于您的回归问题,您应该设置categorical_labels=False
,并且可以完全省略n_classes
。