There’s an inline function f = lambda x: 1+n(x), where n is a neural net defined by n=nn.Sequential(nn.Linear(1,10), nn.Sigmoid()).

n needs to be trained and during training this f function is called all the time. Is this f function evolving with the n being trained, or is f just endowed with a frozen n without training?

Yes, it seems to work as I’m seeing weight updates:

```
n = nn.Sequential(nn.Linear(1,10), nn.Sigmoid())
optimizer = torch.optim.SGD(n.parameters(), lr=1.)
f = lambda x: 1+n(x)
for _ in range(3):
print(n[0].weight.abs().sum())
optimizer.zero_grad()
x = torch.randn(1, 1)
out = f(x)
out.mean().backward()
print(n[0].weight.grad.abs().sum())
optimizer.step()
```

1 Like

thank you, really nice proving that a lambda function is dynamic