2017-04-05 104 views
0

我试图进入机器学习,并决定使用tflearn for一个开始。 我使用tflearn的快速入门指南获取基础知识,并尝试使用该神经网络完成我自己设定的任务: 从其维度预测鲍鱼的年龄。为此,我从UCI存储库中下载了相应的数据集作为.csv。该表的格式如下:形状为'(?,1)'的Tensor'TargetsData/Y:0'无法提供形状的值(1600,)'

SEX |长度|直径|高度|整机重量|去壳WEIGHT |内脏器官的重量|壳重| RINGS

由于年龄相同的振铃次数,我进口在.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张量)时。但我不知道如何解决这个问题。

回答

1

你需要另一个轴添加到标签,因此他们将有一个(1600,1)形状,而不是(1600)

做到这一点是这样的最简单的方法:

labels = labels[:, np.newaxis] 
+0

感谢您的回答。但是,当我尝试这样做时,会出现另一个异常:TypeError:列表索引必须是整数或切片,而不是元组 –

+0

您需要将列表更改为numpy数组,如下所示: labels = np.asarray(labels)[: ,np.newaxis] – mangate

+0

啊,谢谢你,那工作。 –

相关问题