Я новичок в области глубокого и машинного обучения в целом. Я пытался работать с набором данных о ценах на жилье в Калифорнии, передавая каждую из 8 функций в пятиуровневую сеть и обучаясь выводу цены. Я использую потери и точность MSE в качестве метрики с 2000 эпохами. Потеря начинается как понятно большая, уменьшается до определенной степени и застревает примерно на одном уровне. Точность равна 0 для всех 2000 эпох.
Я видел несколько онлайн-решений, которые делали такие вещи, как деление общего количества комнат на количество домохозяйств, чтобы найти среднее количество комнат на домохозяйство. Я вижу, что такая разработка функций поможет сходимости модели быстрее, но я надеялся, что модель сойдется без разработки функций вообще.
Из того, что я понял, нейронные сети являются аппроксиматорами функций, так что он строит функцию от входа до выхода набора данных. В идеале я надеялся, что он также найдет сложные функции, подобные тем, которые вручную вычисляются в онлайн-решениях. Я ошибаюсь, имея эти ожидания? В чем причина того, что модель не сходится?
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)
выход
