So I have this confusion for months now, should I use clone in the folliwng code for `x`

?

I am not sure if it is important or not, but I appreciate if someone can help me understand it.

Is it gonna effect the learning if I go with any of the following samples

Lets say I have a model that somewhere in it I have to use branches of an input and compute different output. I am wondering if I need to use clone or not.

Which one of the following models is correct?

```
class Model(nn.Module):
def __init__(self,):
super(Model, self).__init__()
self.conv = nn.Conv2d(3,6,3)
self.conv_2 = nn.Conv2d(6,2,3)
self.conv_3= nn.Conv2d(6,20,3)
def forward(self,input):
x = self.conv(input)
x_2 = self.conv_2(x)
x_3 = self.conv_3(x)
return x_2,x_3
```

```
class Model(nn.Module):
def __init__(self,):
super(Model, self).__init__()
self.conv = nn.Conv2d(3,6,3)
self.conv_2 = nn.Conv2d(6,2,3)
self.conv_3= nn.Conv2d(6,20,3)
def forward(self,input):
x = self.conv(input)
x_2 = self.conv_2(x.clone())
x_3 = self.conv_3(x)
return x_2,x_3
```

```
class Model(nn.Module):
def __init__(self,):
super(Model, self).__init__()
self.conv = nn.Conv2d(3,6,3)
self.conv_2 = nn.Conv2d(6,2,3)
self.conv_3= nn.Conv2d(6,20,3)
def forward(self,input):
x = self.conv(input)
x_2 = self.conv_2(x.clone())
x_3 = self.conv_3(x.clone())
return x_2,x_3
```