keras model.predict 输出什么?

What does keras model.predict output?

我构建了一个 LSTM 模型(见下文)并对其进行了训练。我的损失函数是二元交叉熵,因为我正在进行二元分类。训练 y 数据是一组 0 和 1。

当我 运行 model.predict(x_test_scaled) 我得到一组值介于 0 和 1 之间的单序列。我猜这是一个概率,但它是输出 = 0 的概率吗或者输出 = 1?

model = Sequential()

model.add(LSTM(units=512, input_shape = (X_train.shape[1],X_train.shape[2]), return_sequences=True)) 
model.add(Dropout(0.3))

model.add(LSTM(units=512, return_sequences=False))
model.add(Dropout(0.3))
    

model.add(Dense(264),  activation = 'tanh')

model.add(Dense(1))

很可能输出你的AI的准确率,越高的AI准确率越好,你可以用它来调整你训练过程中的一些设置以获得更高的准确率。

如有错误请指正!

我对 ANN 很生疏,但也许我可以提供帮助。

Model.predict 通过模型传递输入向量,并 returns 每个数据点的输出张量。 由于模型中的最后一层是单个密集神经元,因此任何数据点的输出都是单个值。由于您没有为最后一层指定激活,因此它将默认为线性激活。

因为您要解决 class 化问题,您可能需要 sigmoid 激活。如果记忆没有出卖我,我相信你可以通过将其解决为具有 2 classes 的 multi-class classification(基本上是 2 个具有 softmax 激活的输出神经元) .本质上,线路激活不适用于class化问题。

更多注意事项:了解您的模型

如果您想了解您得到的输出,您必须了解您训练模型要解决的任务。

对于每个数据点,您告诉模型 the output for this is 1the output for this is 0。但它不会将输出视为输入的 class,而是 [0,1] 范围内的值。并且它正在接受训练以发出此范围内的值。

看看训练 y 张量。假设 0 的输出匹配第一个 class,而 1 的输出匹配第二个 class.

在这种情况下,您的模型对输入越确定,其输出就越远离 0.5。

因此,0.1 的值意味着您的模型有点确定它属于 class 1(更接近输出值 0)。 如果输出是 0.9999 那么它认为输入属于 class 2 非常高的确定性(输出非常接近 1)。 另一方面,如果输出类似于 0.45(非常接近 0.5),那么模型认为“也许输入属于 class 1,但我完全不确定。

希望这对您有所帮助,我也会对任何更准确的答案投赞成票。