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 1
或 the 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,但我完全不确定。
希望这对您有所帮助,我也会对任何更准确的答案投赞成票。
我构建了一个 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 1
或 the 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,但我完全不确定。
希望这对您有所帮助,我也会对任何更准确的答案投赞成票。