Сначала вы должны решить, хотите ли вы рассчитать разреженный гессиан или что-то ближе к полностью плотному гессиану.
Если вам нужен разреженный тип, в настоящее время есть два способа сделать это. Только используя вычислительный граф умным способом, за один оборот развертки вычислительного графа вы можете вычислить матрицу Гессиана, используя алгоритм edge_pushing:
http://www.tandfonline.com/doi/full/10.1080/10556788.2011.580098
Или вы можете попробовать методы раскраски графов, чтобы скомпоновать матрицу Гессе в матрицу из меньшего числа столбцов, а затем использовать обратное накопление для вычисления каждого столбца
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.66.2603
Если вам нужен плотный гессиан (необычно на практике), то вам, вероятно, лучше рассчитывать один столбец гессиана за раз, используя обратное накопление (поиск BRUCE CHRISTIANSON и обратное накопление)