# RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation

my code looks like this
def get_loss(maxpool_output, inputs, dim_bottle_neck, regualization=True, regualization_ratio=0.1):
‘’‘maxpool (30, 256*4, 1)
inputs (30, 3, 1024)
dim_bottle_neck 256
outputs (30, 1024)’’’

``````# get the batch size because for each model has different loss to compute
batch_size = maxpool_output.size(0)

# create the loss and convert it to variable
loss = torch.zeros(batch_size).cuda()
loss = Variable(loss)

# create values that store the value of each point
values = torch.zeros(1024, ).cuda()
values = Variable(values)

# create regualization loss if needed
if regualization:
regualization_loss = torch.zeros(1).cuda()
regualization_loss = Variable(regualization_loss)

# each batch compute a loss and sum them up
for i in range(batch_size):

# extract the x y z coordinate from inputs
x = inputs[i, 0, :].clone()
y = inputs[i, 1, :].clone()
z = inputs[i, 2, :].clone()

# for each RBF there could be a value and sum them up
for j in range(dim_bottle_neck):

# get the d c1 c2 and c3 from maxpool_output
index = j*4
d_ind = maxpool_output[i, index, 0]
c1 = maxpool_output[i, index+1, 0]
c2 = maxpool_output[i, index+2, 0]
c3 = maxpool_output[i, index+3, 0]

# compute the distance from the points to the control point
distance = basis_function(c1, c2, c3, x, y, z)

# convert the distance to the value at thest points
values += d_ind * torch.pow(distance, 3)