学习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 normal1 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代码的主要内容,如果未能解决你的问题,请参考以下文章

Python学习代码——高级篇

python学习之路01

代码学习PYTHON 线程

代码学习PYTHON 面向对象

python学习代码

Python学习教程:如何用python统计代码行数