【问题标题】:tflearn DNN model gives TargetsData/Y:0 errortflearn DNN 模型给出 TargetsData/Y:0 错误
【发布时间】:2017-11-07 01:42:13
【问题描述】:

我收到以下错误...

ValueError: 无法为形状为“(?, 16)”的张量“TargetsData/Y:0”提供形状 (16,) 的值

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

基本上,我有一个 CSV 文件,我使用 pandas 将其保存到变量中...

data = pd.read_csv('Speed Dating Data.csv')

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

# 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, :]

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

【问题讨论】:

    标签: python-3.x csv machine-learning tensorflow tflearn


    【解决方案1】:

    按照以下方式重塑你的标签

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

    标签 重塑为 (?,16)。

    希望这会有所帮助。

    根据您的要求进行了更新。并在更改中添加了 cmets。

    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)
    

    【讨论】:

    • 这解决了这个问题,但现在我有另一个问题。 ValueError: Dimension size must be evenly divisible by 16 but is 6605 for 'Reshape' (op: 'Reshape') with input shapes: [6605], [2] and with input tensors computed as partial shapes: input[1] = [?,16].
    • 所以我的labels 显然不能被 16 整除,我不认为它必须是。有什么快速解决办法吗?
    • 你能把标签和数据的形状都贴出来吗?
    • 由于您的标签数据是年龄,我相信您是在做回归问题,而不是分类?
    • 是的,labels 的形状是 (6605,)data 的形状是 (6605, 32)
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多