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。。。