# Gradients of neural network for 3 Dim input - 1 Dim output regression

I want to get the gradients of model(neural network).
In tensorflow, there is a ‘tf.gradient’
so the following way is possible.

``````x = tf.placeholder(shape=[None,1],dtype=tf.float32)
y = tf.placeholder(shape=[None,1],dtype=tf.float32)
inp = tf.concat([x,y],axis=-1)

def network(x):
x = tf.layers.dense(x,128,activation=tf.nn.relu)
x = tf.layers.dense(x,128,activation=tf.nn.relu)
x = tf.layers.dense(x,128,activation=tf.nn.relu)
x = tf.layers.dense(x,128,activation=tf.nn.relu)
x = tf.layers.dense(x,128,activation=tf.nn.relu)
x = tf.layers.dense(x,1)
return x

pred = network(inp)
``````

But how to I get similar results with above code using pytorch?

``````class net(torch.nn.Module):
def __init__(self):
super(net,self).__init__()
self.linear={}
self.wei={}
self.bias={}
self.para=[]
self.linear[0] = torch.nn.Linear(3,128)
self.linear[1] = torch.nn.Linear(128,128)
self.linear[2] = torch.nn.Linear(128,128)
self.linear[3] = torch.nn.Linear(128,128)
self.linear[4] = torch.nn.Linear(128,1)
def forward(self,x):
for i in range(4):
x=F.elu(self.linear[i](x))
x=self.linear[4](x)
return x

M=net()

for i in range(5):
M.para+=list(M.linear[i].parameters())

L=nn.MSELoss()

######################################

X=torch.Tensor(data[:,0:3])   ### 3 dim input
Y=torch.Tensor(data[:,3])
Y=Y.reshape(-1,1)

for epoch in range(10000):
idx=torch.randint(0,X.shape[0],(24,))

``````