当我使用model.predict时,为什么在keras中得到全1?

时间:2018-07-20 15:18:00

标签: python keras

我正在尝试在keras软件包中使用LSTM。我将所有训练和测试数据标准化为0到1之间的比例。将数组重塑为3D数组。但是,当我查看结果时,得到的数组是1s,而不是1到0之间的缩放值。

这是我的代码:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSiwoyEktVtJRMgRiIwNDC10Dc10DQ6VYHSQ5I2Q5I1Q5Y2Q5Y7BcUmIeEIIkzZElTdAkLZAlTdEkLZElzZRiYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Category = _t, Value = _t, Date = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Value", Int64.Type}, {"Date", type date}, {"Category", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Category"}, {{"Value", each List.Max([Value]), Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "IsMax", each 1, Int64.Type),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"Category", "Value"},#"Added Custom",{"Category", "Value"},"Added Custom",JoinKind.LeftOuter),
    #"Expanded Added Custom" = Table.ExpandTableColumn(#"Merged Queries", "Added Custom", {"IsMax"}, {"IsMax"})
in
    #"Expanded Added Custom"

1 个答案:

答案 0 :(得分:2)

model.add(Dense(units=1, activation='softmax'))

是违规行。激活应为S型。

原因是softmax由

给出

softmax(x)_i = e ^ x_i / sum_i e ^ x_i

归一化您的输出矢量,以使分量之和为1(即,将其映射到单纯形)。如果输出为1,则必须始终为1。

我也对此感到有些惊讶:

loss='mae'

并认为二进制交叉熵是一个更好的选择,因为您的响应介于0和1之间。我猜它取决于输出变量是函数逼近还是概率的解释,这是我所不知道的。 / p>