Борьба с tf. градиентами и несоответствием размеров в тензорном потоке - PullRequest
0 голосов
/ 14 июля 2020

В настоящее время я программирую функцию потерь и изо всех сил пытаюсь вычислить вторые производные модели.

def loss(model, t_interior, S_interior, t_terminal, S_terminal):
    
        Args:
        model:      DGM model object
        t_interior: sampled time points in the interior of the function's domain
        S_interior: sampled space points in the interior of the function's domain
        t_terminal: sampled time points at terminal point (vector of terminal times)
        S_terminal: sampled space points at terminal time
    
    # Loss term #1: PDE
    # compute function value and derivatives at current sampled points
    V = model(t_interior, S_interior)
    V_t = tf.gradients(V, t_interior)[0]
    V_S = tf.gradients(V, S_interior)[0]
        
    sumterm = 0
    
    for i in range(space_dim):
        for j in range(space_dim):
            
            temp1 = tf.transpose(tf.gather_nd(tf.transpose(S_interior), [[i]]))
            temp2 = tf.gather_nd(tf.transpose(S_interior), [[i]])
 
            temp3 = tf.gather_nd(tf.transpose(V_S), [[i]])  # ith column of V_S, but as row vector
            V_SS = tf.gradients(tf.transpose(temp3), tf.transpose(temp2))[0]   # Computes second derivative of V with respect to x_i and x_j
            print('temp3: ', temp3)
            print('V_SS: ', V_SS)
    
            sumterm += tf.multiply(rho, tf.multiply(tf.matmul(sig(temp1),sig(temp2)), V_SS))  
            
    
    diff_V = V_t + tf.matmul(mu(S_interior), V_S) + 0.5* sumterm - r*V

Итак, то, что я пытался сделать с V_SS, - это вычислить все вторые производные от V с помощью относительно S_interior, но теперь он просто безразмерен и не работает в целом. S_interior должен иметь размер (1000, 4), но на самом деле он имеет размер (?, 4) из-за того, что происходит позже в коде. В качестве фона это код, взятый из alialaradi / DeepGalerkinMethod, и я пытаюсь увеличить пространственное измерение до 4 вместо 1. Заранее благодарим за любую помощь и дайте мне знать, если что-то неясно.

...