Es ist eine sehr einfache Geschichte, aber es ist ein Memorandum, weil es eines Tages für eine lange Zeit zu schmelzen scheint.
import torch
import torch.nn as nn
class Encoder(nn.Module):
def __init__(self, p_n_features_num, timesteps) -> None:
self.p_n_features_num = p_n_features_num
self.linear = nn.Linear(
p_n_features_num, p_n_features_num, bias=True)
self.leakyrelu = nn.LeakyReLU()
def forward(self, input_net):
input_net = input_net.view(input_net.size(0), self.p_n_features_num)
return self.leakyrelu(self.linear(input_net))
Wenn Sie hier \ _ \ _ init \ _ \ _ von Encoder aufrufen
cannot assign module before Module.init() call
```Ich bekomme den Fehler.
## Lösung, Code korrigieren
Dies liegt daran, dass die Supermethode nicht zuerst aufgerufen wurde, da sie zum Zeitpunkt von init nn.Module geerbt hat. Daher kann es durch Ändern wie folgt behoben werden.
```python
import torch
import torch.nn as nn
class Encoder(nn.Module):
def __init__(self, p_n_features_num, timesteps) -> None:
super(Encoder, self).__init__()
self.p_n_features_num = p_n_features_num
self.linear = nn.Linear(
p_n_features_num, p_n_features_num, bias=True)
self.leakyrelu = nn.LeakyReLU()
def forward(self, input_net):
input_net = input_net.view(input_net.size(0), self.p_n_features_num)
return self.leakyrelu(self.linear(input_net))
Recommended Posts