【发布时间】:2019-06-24 07:08:31
【问题描述】:
我是深度学习和一般机器学习的新手。我试图通过将 8 个特征中的每一个传递到 5 层网络并训练价格输出来处理加利福尼亚房价数据集。我使用 MSE 损失和准确度作为 2000 个 epoch 的指标。损失开始时可以理解的大,减少到一定程度并停留在相同的值附近。在 2000 个 epoch 中,准确率一直停留在 0。
我在网上看到了一些解决方案,例如将总房间除以家庭数量,以找出每个家庭的平均房间数量。我看到做这样的特征工程会帮助模型更快地收敛,但我希望模型在完全没有特征工程的情况下收敛。
据我了解,神经网络是函数逼近器,因此它构建了一个从数据集输入到输出的函数。理想情况下,我希望它也能找到复杂的特性,比如在线解决方案中手动计算的特性。有这些期望我错了吗?模型不收敛的原因是什么?
train_data = pd.read_csv('./sample_data/california_housing_train.csv', sep=',')
test_data = pd.read_csv('./sample_data/california_housing_test.csv', sep=',')
model = tf.keras.models.Sequential([
layers.Dense(8),
layers.Dense(5, activation=tf.nn.relu),
layers.Dense(7, activation=tf.nn.relu),
layers.Dense(5, activation=tf.nn.relu),
layers.Dropout(0.2),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mean_squared_error', shuffle=True, metrics=['accuracy'])
model.fit(train_data.values[:, 0:8], train_data.values[:, 8], epochs=2000)
【问题讨论】:
-
这听起来像是一个回归问题。您无法衡量准确性 - 只有错误。你能告诉我们你的训练成果吗?
标签: tensorflow machine-learning keras neural-network deep-learning