Python Keras输入尺寸误差

Python Keras输入尺寸误差,python,machine-learning,keras,neural-network,deep-learning,Python,Machine Learning,Keras,Neural Network,Deep Learning,我是凯拉斯的另一名演员。我有一些输入维度问题,你能告诉我如何解决这个错误吗。我真的很感激你 这是数据集有15列的代码。预测值来自列索引[2:14],第14列有四个分类标签 #加载数据集 dataframe=pandas.read\u csv(“tesp\u attack.csv”,header=None) dataframe=dataframe.values 预测器=数据帧[:,2:14].aType(int) 响应=数据帧[:,14] n_cols=预测值。形状[1] 打印(n_cols) 编

我是凯拉斯的另一名演员。我有一些输入维度问题,你能告诉我如何解决这个错误吗。我真的很感激你

这是数据集有15列的代码。预测值来自列索引[2:14],第14列有四个分类标签

#加载数据集
dataframe=pandas.read\u csv(“tesp\u attack.csv”,header=None)
dataframe=dataframe.values
预测器=数据帧[:,2:14].aType(int)
响应=数据帧[:,14]
n_cols=预测值。形状[1]
打印(n_cols)
编码器=LabelEncoder()
编码器安装(响应)
encoded_response=编码器转换(响应)
虚拟响应=np实用到分类(编码响应)
模型=顺序()
添加(密度(50,激活=relu',输入形状=(n\u cols,))
model.add(稠密的(50,activation='relu'))
model.add(密集型(12,activation='softmax'))
compile(优化器='adam',loss='classifical_crossentropy',metrics=['accurity'])
模型拟合(预测因子、虚拟响应)
这就是错误--

---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1模型拟合(预测因子、虚拟响应)
~\Anaconda3\lib\site packages\keras\models.py合适(self、x、y、批量大小、历元、详细、回调、验证分割、验证数据、随机、类权重、样本权重、初始历元、**kwargs)
865级重量=级重量,
866样品重量=样品重量,
-->867初始_历元=初始_历元)
868
869 def评估(自我、x、y、批次大小=32、详细=1、,
~\Anaconda3\lib\site packages\keras\engine\training.py适合(self、x、y、批量大小、历元、详细、回调、验证分割、验证数据、随机、类权重、样本权重、初始历元、每历元的步骤、验证步骤、**kwargs)
1520级重量=级重量,
1521检查批次轴=错误,
->1522批次大小=批次大小)
1523#准备验证数据。
1524 do_验证=错误
~\Anaconda3\lib\site packages\keras\engine\training.py in\u standarding\u user\u数据(自身、x、y、样本重量、类别重量、检查批次轴、批次大小)
1380个输出_形,
1381检查批次轴=错误,
->1382异常(前缀='target')
1383样本权重=\u标准化样本权重(样本权重,
1384自身(输入输出名称)
~\Anaconda3\lib\site packages\keras\engine\training.py输入数据(数据、名称、形状、检查批处理轴、异常前缀)
142'具有形状'+str(形状[i])+
143'但得到了具有形状的数组'+
-->144 str(数组形状))
145返回阵列
146
ValueError:检查目标时出错:预期密集_34具有形状(无,12),但获得具有形状的数组(28802,4)

正如Vivek Kumar在评论中所暗示的,在softmax分类中,最终密集层中的节点数应等于类数;仔细查看错误消息,您会发现它会抱怨,这正是因为该层接收到一个shape
(,4)
输入,而它需要一个shape
(,12)
输入(因为您这样编码)

您应该将最终密集层(更好的是,将类的数量定义为参数)更改为:

num_classes=4
#或以编程方式(需要以np形式导入numpy):
num\u classes=np.unique(响应).size
[...]
添加(密集(num_类,activation='softmax'))#最后一层

请在代码块中插入您的代码和错误请再次查看@0TT0您的目标有4种可能。您在网络中的何处添加了这些内容。为什么最后一个Dense()的输出形状为12?@VivekKumar。好的,我会将输出层中的节点数更改为4,并进行任何修改???否。尝试一下,然后告诉您是否还有任何错误。请在应用之前理解代码。