如何解决基本回归神经网络无法学习
-
我正在尝试训练一个基本的神经网络,用于对数据集进行回归以预测汽车的价格范围。线性回归模型对数据集的表现不是很好,因此构成了神经网络模型。 这是我使用的图层。
tf.keras.backend.clear_session() nmodel = Sequential() nmodel.add(tf.keras.layers.Dense(10,activation='relu',input_shape=[28,])) nmodel.add(tf.keras.layers.Dense(units=1))
-
编译后可以得到如下输出
opt = tf.keras.optimizers.Adam(learning_rate=.2) nmodel.compile(loss='mean_squared_error',optimizer=opt,metrics=['accuracy'])
-
这是我用来拟合它的最后一个函数。
keras_history = nmodel.fit(X_train,Y_train,batch_size=32,epochs=100,validation_data=(X_test,Y_test))
-
训练集的损失通常在 5 个 epoch 后开始停滞,此后模型停止学习。该模型的准确率也很低,即~=0.0015。
-
我尝试了几种方法来解决这个问题。一开始我觉得可能是学习率太小了,但是当我提高学习率时,它也不会学习。
-
我想移除激活函数,因为 relu 可能导致神经元在达到一定损失后死亡。那也没有结果。
-
我测试了不同数量的层和不同数量的神经元。最终,它们都对模型学习没有影响。
-
我曾经制作分类神经网络,这是我第一次制作回归神经网络。我觉得我缺少一些非常基本的东西。
解决方法
我查看了你的笔记本,注意到两件事:
您不应该拟合_转换测试集
我们在训练数据上使用 fit_transform() 来学习训练数据上缩放的参数并同时缩放后者。然而,我们只对测试数据使用 transform() ,因为我们需要保持从训练数据中学习的缩放参数以缩放测试数据。
你需要有
X_test = scaler.transform(X_test)
此外,您无需调整目标值。
你可以改用这个:
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。