多元二元分类预测Tensorflow 2 LSTM

时间:2019-11-26 21:13:30

标签: tensorflow machine-learning lstm

我目前正在研究LSTM的实现,以针对给定的标准缩放特征集预测二进制结果(0或1)。

    self._regressor.add(LSTM(units=60, activation='relu', return_sequences=True, input_shape=(data.x_train.shape[1], data.x_train.shape[2])))
    self._regressor.add(Dropout(0.2))
    self._regressor.add(LSTM(units=60, activation='relu', return_sequences=True))
    self._regressor.add(Dropout(0.3))
    self._regressor.add(LSTM(units=80, activation='relu', return_sequences=True))
    self._regressor.add(Dropout(0.4))
    self._regressor.add(LSTM(units=120, activation='relu'))
    self._regressor.add(Dropout(0.5))
    #this is the output layer
    self._regressor.add(Dense(units=1, activation='sigmoid'))

    self._logger.info("TensorFlow Summary\n {}".format(self._regressor.summary()))
    #run regressor
    self._regressor.compile(optimizer='adam', loss="binary_crossentropy", metrics=['accuracy']) 
    self._regressor.fit(data.x_train, data.y_train, epochs=1, batch_size=32)

    data.y_pred_scaled = self._regressor.predict(data.x_test)
    data.y_pred = self._scaler_target.inverse_transform(data.y_pred_scaled)
    scores = self._regressor.evaluate(data.x_test, data.y_test, verbose=0)

我的问题是,我的预测输出范围为max:0.5188445和min:0.518052,这对我意味着我所有的分类都是肯定的(肯定是错误的)。我什至尝试了Forecast_classes,这产生了一个1的数组。 尽管在网上进行了大量搜索,但我仍在努力寻找问题所在。我已经确保我的最终输出层包括一个S型函数,并且还包括了binary_crossentropy的损失。我的数据已使用sklearn的MinMaxScaler和feature_range =(0,1)进行了缩放。我正在通过调试器运行代码,到目前为止,直到self._regressor.fit的所有内容看起来都不错。我只是在努力量化预测的结果。

任何帮助将不胜感激。

0 个答案:

没有答案