То, что вы ищете, это автоэнкодеры.
Вы обучаете эту нейронную сеть таким образом, чтобы выходной вектор был как можно ближе к входной вектор (вам может потребоваться несколько потерь расстояния: евклидово расстояние, TripletSemiHardLoss, ...). Таким образом, скрытый слой с двумя нейронами будет вашим 2D представлением! В любом случае, ваш подход тоже умный, может быть, чуть более трудоемкий.