Получить частную производную в pytorch - PullRequest
0 голосов
/ 25 августа 2018

coords[i] - это список, содержащий 3 элемента x,y,z, и я хочу получить производную G[i] w.r.t. каждый из x,y,z частично т.е.

d (G [I]) / д (хi)

в некоторой функциональной форме, такой как f(x), чтобы я мог передать скаляр от x до f().

Это одна из функций, которую я использую в качестве одного из своих входов в нейронную сеть, и я хочу найти частную производную моего NN w.r.t до x. Поэтому я пытаюсь найти

d (NN) / d (G1 [i]). d (G1 [i]) / (x_ {i})

import pytorch 
def sym1(coords):
    global avg
    global eeta
    global Rs
    global e
    R_avg=Rc
    G1=[]
    for i,m in enumerate(coords):
        G1.append(0)
        Ri=np.array(coords[i])
        for j in range(i,len(coords)):
            if(i!=j):
                Rj=np.array(coords[j])
                Rij=Ri-Rj
                Rij_norm=np.linalg.norm(Rij)
                sum1=e**(-eeta*((Rij_norm-Rs)**2))
                sum2=cutoff(Rij_norm)
                summation=sum1*sum2
                G1[i]=G1[i]+summation

    return G1
...