Search code examples
pythonmachine-learningoptimizationdeep-learninginversion

How can I solve linear inverse problem Ax=b using Deep Neural Network?


I am trying to solve a linear inverse problem Ax=b using Deep Neural Network. But I am totally new to machine learning and all tutorials are about classification. So, can any one provide me with some tutorials links (codes, videos, paper) on how to use Deep Neural Network used to solve Ax=b problem?


Solution

  • example from this blog

    import torch
    dim = 2
    A = torch.rand(dim, dim, requires_grad=False)
    b = torch.rand(dim, 1,  requires_grad=False)
    x = torch.autograd.Variable(torch.rand(dim, 1), requires_grad=True)
    stop_loss = 1e-2
    step_size = stop_loss / 3.0
    print('Loss before: %s' % (torch.norm(torch.matmul(A, x) - b)))
    for i in range(1000*1000):
        Δ = torch.matmul(A, x) - b
        L = torch.norm(Δ, p=2)
        L.backward()
        x.data -= step_size * x.grad.data # step
        x.grad.data.zero_()
        if i % 10000 == 0: print('Loss is %s at iteration %i' % (L, i))
        if abs(L) < stop_loss:
            print('It took %s iterations to achieve %s loss.' % (i, step_size))
            break
    print('Loss after: %s' % (torch.norm(torch.matmul(A, x) - b)))