Keras LSTM回归仅给出两种值:{0,1}

时间:2018-10-08 06:49:00

标签: python tensorflow keras regression lstm

我正在使用LSTM构建预测模型。我的输入数组有136个二进制元素。

inputArray_day1 = [0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

输出为单个浮点值。 (实际的输出标签范围是[0,9],但我用Z〜N(0,1)对其进行了归一化,

kp_mean = np.mean(y_train)
kp_std = np.std(y_train)
y_train = (y_train - kp_mean)/kp_std

我有1900个训练集,并且在不会导致here过度拟合的隐藏神经元数量的上限上,我决定隐藏神经元的数量为2。

 N_hidden = N_samples/(alpha * (N_input+N_output)) = 1900/(5*(136+1)) = 2.8

我的模特是

opt = tf.keras.optimizers.Adam(lr=0.00005)
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(2,batch_input_shape=(1,1,136),stateful=True))
model.add(tf.keras.layers.Dense(1))
model.compile(loss='mse', optimizer=opt)
model.fit((x_train,y_train,epochs=1,batch_size=1,verbose=1,callbacks=[custom_hist], validation_data = (Xv,Yv))

首先,当学习率为1时,模型的输出仅显示单个值:0或1。用0.00005对其进行更改后,输出将显示混合{0,1},如下所示。 (忽略剧情的标题)

enter image description here

我不知道为什么这个模型只显示{0,1}而没有其他浮点值。请帮帮我。欢迎任何评论!

0 个答案:

没有答案