自动编码器不适用于分类。
它们只是以编码格式压缩数据,因此您可以稍后将这些数据用于其他事情(其他事情之一可能是分类,但为此创建自动编码器真的没有意义,除非您对数据的使用比只是分类)
要根据您的输入数据创建分类器,只需创建一个以您想要的类数结尾的模型。
对于“正常”和“攻击”(只有两个类),您可以在一个类中结束模型并制作0 be normal 和1 be attack。
input_tensor = Input(shape=(input_size,))
output_tensor = Dense(40, activation="relu", activity_regularizer=regularizers.l1(10e-5))(input_tensor)
output_tensor= Dense(30, activation="relu")(output_tensor)
output_tensor = Dense(20, activation="relu")(output_tensor)
output_tensor= Dense(10, activation="relu")(output_tensor)
output_tensor= Dense(5, activation="relu")(output_tensor)
output_tensor= Dense(3, activation="relu")(output_tensor)
output_tensor= Dense(1,activation='sigmoid')(output_tensor)
model = Model(input_tensor,output_tensor)
我使用了 1 个输出 (Dense(1)),我希望为 0(正常)或 1(攻击)。 'sigmoid' 激活对于将结果保持在这个范围或 0 和 1 内很重要。
现在您只需要确保您的y_true 数据是一个形状为(records,) 或(records,1) 的数组,具体取决于型号。