如何设置深度学习模型的激活或优化器,RNN仅接受1,0



例如

我有像这个这样的时间序列数据

[[1,0,0,0] [1,0,0,1],[1,0,1,0],[1,1,0,0]],,,,

它预测了过去两次中的下一次。

我想放[[1,0,0,0],[1,0,0,1]]并得到[1,0,1,0]

所以我做了下面这样的模型。

input_len = 2
n_in = 4
n_hidden = 512
model = Sequential()
model.add(LSTM(n_hidden, input_shape=(input_len,n_in), return_sequences=True))

model.add(Dropout(0.1))
model.add(LSTM(n_hidden,  return_sequences=False))

model.add(Dense(n_hidden, activation="linear")) 

model.add(Dense(n_in, activation="linear"))
opt = Adam(lr=0.001)
model.compile(loss='mse', optimizer=opt)
model.summary()
#trainning and validate data 
X     #X.shape (800, 2, 4) [ [[1,0,0,1],[1,0,0,1]],[[1,0,0,1],[1,0,0,0]],,,
Y     #Y.shape (200, 2, 4)
val_x #val_x.shape (800,1,4) [[1,0,1,0]][1,1,1,0],,,,
val_y #val_y.shape (200,1,4)
history = model.fit(x, y, epochs=50,validation_data=(val_x, val_y))
#then predict
in_ = np.array[[1,0,0,1][1,1,1,1]]
out_ = model.predict(in_)
print(out_)

作为结果,我期望至少10

然而,我得到的号码是这样的[[4.9627638e-01 1.4797167e-01 3.3314908e-01 1.3892795e-04]]

我想这与activationoptimizer有关。。。

我说得对吗?或者我应该如何处理1和0数据?


linear更改为relu

结果在[0.41842282 0.1275532 0. 0.4288069]之间

然而,它仍然不是0或1…

模型输出不能是离散的,因为它应该是可微的。尝试添加类似的内容:

out_ = tf.cast(tf.math.greater(out_, 0.5), tf.int32)

这不是正确的预测,但准确性取决于你的数据(例如,如果你的数据是随机的,没有模式,那么你的准确率为6%(。试着只基于[[1,0,0,0] [1,0,0,1],[1,0,1,0]]进行训练,以确保你的模型有效。

相关内容

  • 没有找到相关文章

最新更新