This topic has been discussed at some length on Cross Validated (aka stats.stackexchange) and Reddit:
Why is Newton's method not widely used in machine learning? (see in particular Nick Alger's answer)
Why use gradient descent with neural networks?
L-BFGS and neural nets
Why second order SGD convergence methods are unpopular for deep learning?
How does the ...
You should use a modeling language so that your code is independent of the underlying solver.
cvxpy is a good choice.
When I rewrite your model in cvxpy:
import cvxpy as cp
import numpy as np
from numpy.random import normal as randn
Sample = 10
H = randn(size=(4,2,Sample))+1j*randn(size=(4,2,Sample))
h = randn(size=(4,1))+1j*randn(...