无法为 Tensor 'TargetsData/Y:0' 提供形状 (1600,) 的值,其形状为“(?, 1)”
Cannot feed value of shape (1600,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'
我正在尝试进入机器学习领域,我决定先使用 tflearn。
我使用 tflearn 的快速入门指南了解基础知识,并尝试使用该神经网络完成我为自己设定的任务:
从鲍鱼的尺寸预测鲍鱼的年龄。为此,我从 UCI 存储库下载了相应的数据集 .csv
。 table 的格式为:
性别|身长|直径|身高|体重|去壳重量|内脏重量|SHELL 重量|戒指
因为年龄和环数一样,所以我导入了.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 张量)与我的输出层相匹配时发生异常。但我不知道如何解决这个问题。
您需要向标签添加另一个轴,以便它们具有 (1600,1) 形状而不是 (1600,)
最简单的方法是这样的:
labels = labels[:, np.newaxis]
我正在尝试进入机器学习领域,我决定先使用 tflearn。
我使用 tflearn 的快速入门指南了解基础知识,并尝试使用该神经网络完成我为自己设定的任务:
从鲍鱼的尺寸预测鲍鱼的年龄。为此,我从 UCI 存储库下载了相应的数据集 .csv
。 table 的格式为:
性别|身长|直径|身高|体重|去壳重量|内脏重量|SHELL 重量|戒指
因为年龄和环数一样,所以我导入了.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 张量)与我的输出层相匹配时发生异常。但我不知道如何解决这个问题。
您需要向标签添加另一个轴,以便它们具有 (1600,1) 形状而不是 (1600,)
最简单的方法是这样的:
labels = labels[:, np.newaxis]