Python 我能';我不理解LSTM';s预测输出
我在学习神经网络,我带了一些样本代码去调试。。。 我想了解,如何将浮点型输出转换为二进制,因为当我尝试进行预测时,我知道事件发生的可能性,但我不知道在Python 我能';我不理解LSTM';s预测输出,python,tensorflow,keras,neural-network,lstm,Python,Tensorflow,Keras,Neural Network,Lstm,我在学习神经网络,我带了一些样本代码去调试。。。 我想了解,如何将浮点型输出转换为二进制,因为当我尝试进行预测时,我知道事件发生的可能性,但我不知道在0或1的情况下会发生哪些事件 这是我输入的LSTM,一个三维矩阵: [[-0.11366585 0.06156679 0.00605332 ... -1.02887191 1.458945 -1.00647382] [ 0.89127279 0.39238284 0.03161757 ... 0.97193829
0
或1
的情况下会发生哪些事件
这是我输入的LSTM,一个三维矩阵:
[[-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,我如何解决这个问题?你得到的是每类0和1的概率。请执行以下操作:
import numpy as np
np.argmax(output,axis=1)
如果您正在使用Keras,您还可以:
model.predict_classes(X_train)
argmax函数并不能解决我的问题,例如,我的答案可以是0或1的60%,argmax推断50以下的都是0,50以上的都是1。。。