学习python代码
Posted
技术标签:
【中文标题】学习python代码【英文标题】:Learning python code 【发布时间】:2018-04-25 03:43:05 【问题描述】:我将此代码与 keras 一起用于特征学习,现在我想进行分类,我不知道如何将 softmax 层添加到我的自动编码器中,请帮助我
【问题讨论】:
你想要图层在哪里?哪个模型在做分类?你的输入是什么?你的输出是什么? ---- PS:解码端应该使用decoder
作为输入,而不是encoder
。
只有decoder
中的第一层应该将encoder
作为输入。所有其他人都应使用decoder
作为输入。您只是丢弃了中间解码器层的输出。在您的模型中,唯一有效的解码器层是最后两个(密集(30)和密集(41))。所有其他人都被丢弃,因为您正在将encoder
输入到以下人。
【参考方案1】:
自动编码器不适用于分类。
它们只是以编码格式压缩数据,因此您可以稍后将这些数据用于其他事情(其他事情之一可能是分类,但为此创建自动编码器真的没有意义,除非您对数据的使用比只是分类)
要根据您的输入数据创建分类器,只需创建一个以您想要的类数结尾的模型。
对于“正常”和“攻击”(只有两个类),您可以在一个类中结束模型并制作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)
的数组,具体取决于型号。
【讨论】:
你的y_true
到底是什么?它说你应该有 41 节课。
所以,你传递的是输入而不是输出......你应该model.fit(inputs, outputs, ....)
以上是关于学习python代码的主要内容,如果未能解决你的问题,请参考以下文章