python - ValueError:无法为具有形状“(?,1)”的张量“TargetsData / Y:0”提供形状(64,)的值
问题描述
总的来说,我对 Python 编程有相当多的经验,但对神经网络和深度学习还是很陌生。在完成了 Tech With Tim 的 Mega AI 课程后,我决定自己创建一个神经网络。这很简单——它接受一个名字并根据其性别输出 0 或 1——0 = 男性,1 = 女性。
这是我的完整代码。
import numpy as np
import pandas as pd
import tensorflow as tf
import tflearn
encode_alphabet = '0ABCDEFGHIJKLMNOPQRSTUVWXYZ'
data = pd.read_csv("names.csv")
X = data.drop(["OUT"], 1).values.tolist()
y = [int("".join([str(j) for j in i])) for i in data[["OUT"]].values.tolist()]
print(len(X))
print(len(y))
tf.compat.v1.reset_default_graph()
net = tflearn.input_data(shape=[None, 12])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 1, activation="linear")
net = tflearn.regression(net)
model = tflearn.DNN(net)
model.fit(X, y, n_epoch=100, show_metric=True)
print(data)
names.csv 文件如下所示(前 5 行):
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 OUT
0 0 0 0 0 0 15 12 9 22 5 18 0
0 0 0 0 0 0 7 5 15 18 7 5 0
0 0 0 0 0 0 0 8 1 18 18 25 0
0 0 0 0 0 0 0 0 14 15 1 8 0
0 0 0 0 0 0 0 0 10 1 3 11 0
这是我得到的错误:
ValueError: Cannot feed value of shape (64,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'
我尝试了各种模型形状,但似乎没有任何效果。如果需要的话,我很高兴为你们提供更多信息,但我对这一切都很陌生,以至于 RTFM 的回应真的无济于事。
非常感谢提前
解决方案
错误是不言自明的
ValueError: Cannot feed value of shape (64,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)'
这意味着您传递的形状与预期的y
形状(64,)
不匹配(?, 1)
。要修复它,您只需要更改形状y
:
y = [[int("".join([str(j) for j in i]))] for i in data[["OUT"]].values.tolist()]
或者
y = np.array([int("".join([str(j) for j in i])) for i in data[["OUT"]].values])
y = y.reshape(len(y), 1)
推荐阅读
- android - 自动更新应用程序,无需在 android 中使用 Play 商店
- java - Mapstruct - 空集
- go - 将两个 if 条件合二为一
- javascript - 有没有办法使用纯文本和 javascript 创建注册/登录“数据库”?
- javascript - 如何将字符串(对象)拆分为新项目中的“保存”?
- c# - 如何使 Json.NET 序列化和反序列化也实现 IDictionary 的自定义动态类型的声明属性
? - reactjs - AntDesign TimePicker React 组件未呈现为下拉菜单
- permutation - 如何在我的词频程序中使用 LineNo(单词出现的行)和 CurLine(当前行)扩展这些数据结构?
- flutter - 如何在 Flutter 中从 ByteData 加载图像小部件
- windows - Composer 卸载程序冻结