您好,我正在处理表达式数据的二进制时间序列,如下所示:
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或1。通过在两者之间给出一个数字,它产生了某种程度的自信,接近1的数字更自信地是1。要对此进行转换,可以应用阈值化,将输出四舍五入为0或1
这就是说,这实际上并没有最小化某些类型的损失函数。如果你在MSE这样的函数上得分,最好保持数字不变
相关问题 更多 >
编程相关推荐