Python Keras致密输出层形状错误

Python Keras致密输出层形状错误,python,machine-learning,keras,ddos,Python,Machine Learning,Keras,Ddos,我一直在尝试用keras编写一个python模型,它可以检测高中项目中的几种类型的DDOS攻击,但无法使输出层具有正确的形状 我的代码: 我得到的错误是: Using TensorFlow backend. /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: compiletime ve

我一直在尝试用keras编写一个python模型,它可以检测高中项目中的几种类型的DDOS攻击,但无法使输出层具有正确的形状

我的代码:

我得到的错误是:

Using TensorFlow backend.
/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6
  return f(*args, **kwds)
Traceback (most recent call last):
  File "/Users/Jacob/git/DDOS-ML-Detection/ddos-detect.py", line 73, in <module>
    model.fit(data_train, label_train, epochs=5)
  File "/usr/local/lib/python3.6/site-packages/keras/models.py", line 960, in fit
    validation_steps=validation_steps)
  File "/usr/local/lib/python3.6/site-packages/keras/engine/training.py", line 1581, in fit
    batch_size=batch_size)
  File "/usr/local/lib/python3.6/site-packages/keras/engine/training.py", line 1418, in _standardize_user_data
    exception_prefix='target')
  File "/usr/local/lib/python3.6/site-packages/keras/engine/training.py", line 153, in _standardize_input_data
    str(array.shape))
ValueError: Error when checking target: expected dense_6 to have shape (None, 1) but got array with shape (22, 5)
使用TensorFlow后端。
/usr/local/ceral/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:205:RuntimeWarning:compiletime模块“tensorflow.Python.framework.fast_tensor_util”的版本3.5与运行时版本3.6不匹配
返回f(*args,**kwds)
回溯(最近一次呼叫最后一次):
文件“/Users/Jacob/git/DDOS-ML-Detection/DDOS-detect.py”,第73行,在
模型拟合(数据序列、标签序列、历元=5)
文件“/usr/local/lib/python3.6/site-packages/keras/models.py”,第960行,适合
验证步骤=验证步骤)
文件“/usr/local/lib/python3.6/site-packages/keras/engine/training.py”,第1581行,适合
批次大小=批次大小)
文件“/usr/local/lib/python3.6/site packages/keras/engine/training.py”,第1418行,在用户数据中
异常(前缀='target')
文件“/usr/local/lib/python3.6/site packages/keras/engine/training.py”,第153行,输入数据
str(array.shape))
ValueError:检查目标时出错:预期密集_6具有形状(无,1),但获得具有形状(22,5)的数组
如果能在这个问题上得到任何帮助,我将不胜感激


谢谢你在最后一层有1个输出神经元,但很明显你标记了6个。因此,您需要更改为具有相同数量的输出神经元或调整标签数据。

您在最后一层中有1个输出神经元,但显然您标记了6个。因此,您需要更改为具有相同数量的输出神经元或调整标签数据。

如果您的目标数据真的应该每个样本有5个值,那么您应该在最后有一个
密集(5)
,而不是
密集(1)


如果不是这样,那么你的数据就有问题了

如果您的目标数据真的应该每个样本有5个值,那么您应该在最后有一个
密集型(5)
,而不是
密集型(1)

如果不是这样,那么你的数据就有问题了

generate_model()函数应如下所示

def generate_model(shape):
    model = Sequential()
    model.add(Dense(26, input_dim=shape, activation='relu'))
    model.add(Dropout(0.15))
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.25))
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(32, activation='relu'))
    model.add(Dropout(0.15))
    model.add(Dense(5, activation='sigmoid'))

   return model
培训标签的最后一个维度必须是5,因此生成模型()函数的错误应该如下所示

def generate_model(shape):
    model = Sequential()
    model.add(Dense(26, input_dim=shape, activation='relu'))
    model.add(Dropout(0.15))
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.25))
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(32, activation='relu'))
    model.add(Dropout(0.15))
    model.add(Dense(5, activation='sigmoid'))

   return model

培训标签的最后一个维度必须为5,因此出现错误

请添加生成此错误的代码片段。请添加生成此错误的代码片段。