use*_*057 0 python sequential keras tensorflow
我已经构建了一个 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))
Run Code Online (Sandbox Code Playgroud)
小智 5
我对人工神经网络很生疏,但也许我可以帮忙。
Model.predict将输入向量传递给模型并返回每个数据点的输出张量。由于模型中的最后一层是单个密集神经元,因此任何数据点的输出都是单个值。由于您没有为最后一层指定激活,因此它将默认为线性激活。
因为您正在解决分类问题,所以您可能需要sigmoid激活。如果记忆没有背叛我,我相信你可以通过将其解决为具有 2 个类别的多类分类(本质上是具有 softmax 激活的 2 个输出神经元)来解决。本质上,线激活不适合分类问题。
更多注释:了解您的模型
如果您想了解所获得的输出,则必须了解训练模型要解决的任务。
对于每个数据点,您可以告诉模型the output for this is 1或the output for this is 0。但它并不将输出视为输入的类,而是将其视为范围 [0,1] 中的值。并且它正在被训练以发出这个范围内的值。
看一下训练y张量。让我们假设 的输出匹配0第一类,并且 的输出1匹配第二类。
在这种情况下,您的模型对输入越确定,其输出就越远离 0.5。
因此,值 意味着0.1您的模型在某种程度上确定它属于class 1(更接近输出值0)。如果输出是,0.9999那么它认为输入属于class 2非常高的确定性(输出非常接近1)。另一方面,如果输出类似于0.45(非常接近0.5),则模型会认为“也许输入属于第 1 类,但我完全不确定。
希望这对您有所帮助,我也会对任何更准确的答案进行投票。
| 归档时间: |
|
| 查看次数: |
11008 次 |
| 最近记录: |