我正在使用前馈神经网络进行回归,我得到的预测结果是下图中可见的常数值:
我使用的数据是典型的标准化表格数字。架构如下:
model.add(Dense(units=512, activation='relu', input_shape=x_train.shape[1],)))
model.add(Dropout(0.2))
model.add(Dense(units=512, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(units=256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=1))
adam = optimizers.Adam(lr=0.1)
model.compile(loss='mean_squared_error', optimizer=adam)
reduce_lr = ReduceLROnPlateau(
monitor='val_loss',
factor=0.9,
patience=10,
min_lr=0.0001,
verbose=1)
tensorboard = TensorBoard(log_dir="logs\{}".format(NAME))
history = model.fit(
x_train,
y_train,
epochs=500,
verbose=10,
batch_size=128,
callbacks=[reduce_lr, tensorboard],
validation_split=0.1)
在我看来,所有权重都归零,并且这里只存在恒定偏差,因为对于来自测试集的不同数据样本,我得到相同的值。
我知道该算法已经为这样一个常数值找到了最小的 MSE,但是有没有办法避免这种情况,因为直线对我的项目来说并不是很好的解决方案?
