【问题标题】:Cannot feed value of shape (1600,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'无法为具有形状“(?,1)”的张量“TargetsData / Y:0”提供形状(1600,)的值
【发布时间】:2017-04-05 12:47:47
【问题描述】:

我正在尝试进入机器学习领域,并决定使用 tflearn 作为开始。 我使用 tflearn 的快速入门指南来了解基础知识,并尝试使用该神经网络来完成我自己设定的任务: 从鲍鱼的尺寸预测鲍鱼的年龄。为此,我从 UCI 存储库下载了相应的数据集为 .csv。表格格式如下:

性别|长度|直径|高度|整重|去壳重量|内脏重量|壳重|戒指

由于年龄与环数相同,我这样导入.csv

data, labels = load_csv("abalone.csv", categorical_labels=False, has_header=False)

任务是根据数据预测环的数量,所以我这样设置我的输入层:

net = tflearn.input_data(shape=[None, 8])

添加了四个具有默认线性激活函数的隐藏层:

net = tflearn.fully_connected(net, 320)
net = tflearn.fully_connected(net, 200)
net = tflearn.fully_connected(net, 200)
net = tflearn.fully_connected(net, 320)

输出层只有一个节点,因为只有一个结果(环数):

net = tflearn.fully_connected(net, 1, activation="sigmoid")
net = tflearn.regression(net)

现在我初始化模型,但在训练过程中出现上述错误:

model = tflearn.DNN(net)
model.fit(data, labels, n_epoch=1000, show_metric=True, batch_size=1600)

整个例外:

Traceback (most recent call last):
  File "D:\OneDrive\tensornet.py", line 34, in <module>
    model.fit(data, labels, n_epoch=1000, show_metric=True, batch_size=1600)
  File "C:\Python3\lib\site-packages\tflearn\models\dnn.py", line 215, in fit
    callbacks=callbacks)
  File "C:\Python3\lib\site-packages\tflearn\helpers\trainer.py", line 333, in fit
    show_metric)
  File "C:\Python3\lib\site-packages\tflearn\helpers\trainer.py", line 774, in _train
    feed_batch)
  File "C:\Python3\lib\site-packages\tensorflow\python\client\session.py", line 767, in run
    run_metadata_ptr)
  File "C:\Python3\lib\site-packages\tensorflow\python\client\session.py", line 944, in _run
    % (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (1600,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'

据我了解,尝试将我的标签(这是一个 1600x1 张量)与我的输出层相匹配时会发生异常。但我不知道如何解决这个问题。

【问题讨论】:

    标签: python csv tensorflow tflearn


    【解决方案1】:

    您需要向标签添加另一个轴,以便它们具有 (1600,1) 形状而不是 (1600,)

    最简单的方法是这样的:

     labels = labels[:, np.newaxis]
    

    【讨论】:

    • 感谢您的回答。但是当我尝试这个时,又出现了另一个异常:TypeError: list indices must be integers or slices, not tuple
    • 你需要把列表改成一个numpy数组,像这样:labels = np.asarray(labels)[:, np.newaxis]
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2020-03-27
    相关资源
    最近更新 更多