tflearn DNN 模型给出 TargetsData/Y:0 错误

tflearn DNN model gives TargetsData/Y:0 error

我收到以下错误...

ValueError: Cannot feed value of shape (16,) for Tensor 'TargetsData/Y:0', which has shape '(?, 16)'

我知道这与我的 Y 变量的形状有关,在本例中是变量 labels,但我不确定如何更改形状以使我的模型工作。

基本上,我有一个 CSV 文件,我使用 pandas...

将其保存到一个变量中
data = pd.read_csv('Speed Dating Data.csv')

经过一些预处理后,我决定提取我的目标 class 这样...

# Target label used for training
labels = np.array(data["age"], dtype=np.float32)

接下来我从 data 变量中删除了这一列...

# Data for training minus the target label.
data = np.array(data.drop("age", axis=1), dtype=np.float32)

然后我决定设置我的模型...

net = tflearn.input_data(shape=[None, 32])
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 16, activation='softmax')
net = tflearn.regression(net)

# Define model.
model = tflearn.DNN(net)

model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True)

如果我运行这个,我得到上面的错误。由于我的 labels 似乎是 (16,) 但我需要它是 (?, 16),我尝试了以下代码...

labels = labels[np.newaxis, :]

但这又给出了另一个错误。我想我不确定我的目标 class、labels 应该是什么形式。我该如何解决这个问题?

根据以下内容重塑您的标签

label= np.reshape(label,(-1,16)) # since you have 16 classes

label 重塑为 (?,16).

希望对您有所帮助。

已根据您的要求进行了更新。并对更改添加了评论。

labels = np.array(data["age"], dtype=np.float32)
label= np.reshape(label,(-1,1)) #reshape to [6605,1]

data = np.array(data.drop("age", axis=1), dtype=np.float32)

net = tflearn.input_data(shape=[None, 32])
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 1, activation='softmax') #Since this is a regression problem only one output
net = tflearn.regression(net)

# Define model.
model = tflearn.DNN(net)

model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True)