我目前正在研究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的所有内容看起来都不错。我只是在努力量化预测的结果。
任何帮助将不胜感激。