我无法理解 LSTM 的预测输出
I can't understand LSTM's prediction output
我正在研究神经网络,我拿了一些示例代码来调试...
我想了解,如何将浮点型输出转换为二进制,因为当我尝试进行预测时,我知道事件发生的可能性,但我不知道哪些事件会发生,在案例 0
或 1
.
这是我的 LSTM 条目,一个 3 维矩阵:
[[-0.11366585 0.06156679 0.00605332 ... -1.02887191 1.458945 -1.00647382]
[ 0.89127279 0.39238284 0.03161757 ... 0.97193829 1.52031675 -0.76247354]]
...
[[ 3.09754916 0.15064888 2.71586375 ... 0.97193829 -0.03852574 0.54641066]
[-0.08069378 0.6887738 -0.29432661 ... 0.97193829 0.02207886 -0.37703]]
这是数据输出:
[[0.36732605 0.6326739 ]
[0.3584979 0.64150214]
[0.5920879 0.40791208]
...
[0.5283355 0.47166446]
[0.5267493 0.4732507 ]
[0.5926927 0.4073073 ]]
应该如何:
[[1. 0.]
[1. 0.]
[0. 1.]
[1. 0.]
[0. 1.]
...
[1. 0.]
[1. 0.]
[0. 1.]
[1. 0.]
[0. 1.]]
在这种情况下,正确答案是右栏 (>) 中的答案,0 和 1 都可以在 0% 到 100% 之间,并不是因为低于 50% 答案就是 0
这是我模型的代码:
model = Sequential()
model.add(LSTM(32, input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
model.add(Dropout(0.2))
# second layer
model.add(LSTM(32, return_sequences=False))
model.add(Dropout(0.2))
# fourth layer and output
model.add(Dense(16, activation='relu'))
model.add(Dense(2, activation='softmax'))
# compile layers
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
当我使用预测函数时,它只给出百分比,但没有指示它是 0 还是 1,我该如何解决?
您得到每个 class 0 和 1 的概率。执行以下操作:
import numpy as np
np.argmax(output,axis=1)
如果您使用的是 Keras,您还可以:
model.predict_classes(X_train)
我正在研究神经网络,我拿了一些示例代码来调试...
我想了解,如何将浮点型输出转换为二进制,因为当我尝试进行预测时,我知道事件发生的可能性,但我不知道哪些事件会发生,在案例 0
或 1
.
这是我的 LSTM 条目,一个 3 维矩阵:
[[-0.11366585 0.06156679 0.00605332 ... -1.02887191 1.458945 -1.00647382]
[ 0.89127279 0.39238284 0.03161757 ... 0.97193829 1.52031675 -0.76247354]]
...
[[ 3.09754916 0.15064888 2.71586375 ... 0.97193829 -0.03852574 0.54641066]
[-0.08069378 0.6887738 -0.29432661 ... 0.97193829 0.02207886 -0.37703]]
这是数据输出:
[[0.36732605 0.6326739 ]
[0.3584979 0.64150214]
[0.5920879 0.40791208]
...
[0.5283355 0.47166446]
[0.5267493 0.4732507 ]
[0.5926927 0.4073073 ]]
应该如何:
[[1. 0.]
[1. 0.]
[0. 1.]
[1. 0.]
[0. 1.]
...
[1. 0.]
[1. 0.]
[0. 1.]
[1. 0.]
[0. 1.]]
在这种情况下,正确答案是右栏 (>) 中的答案,0 和 1 都可以在 0% 到 100% 之间,并不是因为低于 50% 答案就是 0
这是我模型的代码:
model = Sequential()
model.add(LSTM(32, input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
model.add(Dropout(0.2))
# second layer
model.add(LSTM(32, return_sequences=False))
model.add(Dropout(0.2))
# fourth layer and output
model.add(Dense(16, activation='relu'))
model.add(Dense(2, activation='softmax'))
# compile layers
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
当我使用预测函数时,它只给出百分比,但没有指示它是 0 还是 1,我该如何解决?
您得到每个 class 0 和 1 的概率。执行以下操作:
import numpy as np
np.argmax(output,axis=1)
如果您使用的是 Keras,您还可以:
model.predict_classes(X_train)