I don't find where the mistake is.Who can help me,please

import torch.nn as nn

N, D_in, H, D_out = 64,1000,100,10

#随机创建一些训练数据
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)

class TwoLayerNet(torch.nn.Module):
def init(self, D_in, H, D_out):
super(TwoLayerNet, self).init()
self.Linear1 = torch.nn.Linear(D_in, H, bias=False)
self.Linear2 = torch.nn.Linear(H, D_out, bias=False)

``````def forward(self, x):
y_pred = self.linear2(self.linear1(x).clamp(min=0))
return y_pred
``````

model = TwoLayerNet(D_in, H, D_out)
loss_fn = nn.MSELoss(reduction=‘sum’)
learning_rate = 1e-4

for it in range(500):

Forward pass

y_pred = model(x)

``````# compute loss
loss = loss_fn(y_pred, y)  # computation graph
print(it, loss.item())

# Backward pass
loss.backward()

# update model parameters
optimizer.step()
``````

ModuleAttributeError Traceback (most recent call last)
in
24 for it in range(500):
25 # Forward pass
—> 26 y_pred = model(x)
27
28 # compute loss

E:\anaconda3\envs\sbw\lib\site-packages\torch\nn\modules\module.py in _call_impl(self, *input, **kwargs)
725 result = self._slow_forward(*input, **kwargs)
726 else:
→ 727 result = self.forward(*input, **kwargs)
728 for hook in itertools.chain(
729 _global_forward_hooks.values(),

in forward(self, x)
14
15 def forward(self, x):
—> 16 y_pred = self.linear2(self.linear1(x).clamp(min=0))
17 return y_pred
18

E:\anaconda3\envs\sbw\lib\site-packages\torch\nn\modules\module.py in getattr(self, name)
776 if name in modules:
777 return modules[name]
→ 778 raise ModuleAttributeError("’{}’ object has no attribute ‘{}’".format(
779 type(self).name, name))
780

ModuleAttributeError: ‘TwoLayerNet’ object has no attribute ‘linear2’

Maybe because on forward you called linear with lowercase but you define it with first letter uppercase

Yes,you are right.Thank you very much.Thank you