我正在尝试在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"
答案 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>