你好,我正在处理表达式数据的二进制时间序列,如下所示:
0: decrease expression
1: increase expression
我正在训练一个双向LSTM网络来预测下一个值,但不是给我0或1的值,而是返回像这样的值:
0.564
0.456
0.423
0.58
如何获取返回0或1的值?
这是我的代码:
ventana = 10
n_features = 1
neurons = 256 #155
activacion = 'softmax'
perdida = 0.25
batch_size = 32 # 32
epochs = 100 # 200
X, y = split_sequence(cierres, ventana)
X = X.reshape((X.shape[0], X.shape[1], n_features))
# define model
model = Sequential()
model.add(Bidirectional(LSTM(neurons, activation=activacion), input_shape=(ventana, n_features)))
model.add(Dropout(perdida))
model.add(Dense(1))
model.compile(optimizer='adam', loss='binary_crossentropy')
# fit model
model.fit(X, y, epochs=epochs, batch_size=batch_size, verbose=1, shuffle=False)
答案 0 :(得分:0)
网络正在有效地对数据进行回归,并且未给出确切的0或1。通过在两者之间给出一个数字,它会产生置信度,越接近1的数字越容易确定是1。要转换此数字,您可以应用阈值,将输出舍入到0或1。
import numpy as np
y_out = model.fit(...)
y_pred = np.round(y_out)
话虽如此,但这实际上并未使某些损失函数最小化。如果您在像MSE这样的功能上得分,最好保持数字不变。