【问题标题】:how to make a model fit the dataset in Keras?如何使模型适合 Keras 中的数据集?
【发布时间】:2021-12-26 00:53:17
【问题描述】:

这个想法是制作一个可以检测是否发生攻击的程序

我在拟合模型时卡住了

导入的库

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
from keras.layers.convolutional import Conv1D
from keras.layers.convolutional import MaxPooling1D
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
import pandas as pd

数据集详情:

https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/bot_iot.php

https://ieee-dataport.org/documents/bot-iot-dataset

files picture

正如您在攻击栏中看到的那样 我想让程序判断是否发生了攻击

这是模型

model = Sequential()
model.add(Conv1D(128, 5, activation='relu'))
model.add(MaxPooling1D())
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(10,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
model.add(Flatten())

模型编译

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

模型配件部分(这是我的问题)

model.fit(train, test, epochs=50, batch_size=30)

错误:

ValueError: Data cardinality is ambiguous:
  x sizes: 2934817
  y sizes: 733705
Make sure all arrays contain the same number of samples.

从错误消息中可以看出文件的行数不同

所以我尝试只取测试文件,并将其中的 2 部分作为第一部分

从第 0 列到第 16 列

另一个是 16 岁

x = test.iloc[:,0:16]
y = test.iloc[:,16]
model.fit(x, y, epochs=50, batch_size=30)

错误:

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type int).

我已经尝试将它全部设为浮动,但它没有解决仍然有同样的问题

【问题讨论】:

    标签: python keras deep-learning


    【解决方案1】:

    我发现的第一个问题是,在使用 .fit() 时,您需要传递 xy 值,而不是 traintest 集合,这就是您收到错误的原因. Keras 正在尝试根据 train 数据集预测您的完整 test 数据集,这当然没有任何意义。

    第二个错误似乎您将正确的变量传递给模型(最后一列是 target,定义为 ypredictors em> 定义为 x) 但是数据的格式似乎存在问题。如果没有访问数据,就很难解决它。所有列都是数字的吗?如果是这样,正如here 所述,这可能有助于解决问题:

    x = np.asarray(x).astype('float32')
    

    如果所有入口点的数据都不是数字的,那么您可能需要进行一些预处理以确保它是完全数字的。一些值得研究的替代方案可能是:

    一旦您的数据集都是数字类型,您应该能够毫无问题地使用它来训练模型。

    【讨论】:

    • 数据是整数和文本的混合,如上传的图片所示(在数据集链接下)它的名字是文件图片,我确实尝试使用这个技巧没有成功
    猜你喜欢
    • 2019-05-07
    • 2021-08-12
    • 2019-11-05
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2019-09-15
    相关资源
    最近更新 更多