hi, I have a problem.
I want to try deep learning with Transformer_encoder. But I got error message like below.
RuntimeError: CUDA error: device-side assert triggered
I want to have any suggestions.
I’m putting code here.
class Encoder(nn.Module):
def __init__(self, num_embeddings, embedding_dim, num_layers):
super().__init__()
self.em1 = nn.Embedding(
num_embeddings=num_embeddings, embedding_dim=embedding_dim
)
encoder_layer = nn.TransformerEncoderLayer(d_model=embedding_dim, nhead=5)
self.transformer_encoder = nn.TransformerEncoder(
encoder_layer, num_layers=num_layers
)
def forward(self, torch_comp, torch_comp_wt):
ratio = torch_comp_wt
sym = torch_comp
desc = self.em1(torch_comp.to(torch.long))
desc = self.transformer_encoder(desc) <---error occured here
vec = torch.einsum("ij,ijk->ijk", ratio, desc)
vec = torch.mean(vec, dim=-1)
vec, _ = torch.sort(vec, dim=1)
vec = torch.cat((sym, ratio, vec), dim=1)
return vec
class Net(nn.Module):
def __init__(self, input_dim, out_dim, hidden_dim, num_embeddings, embedding_dim, num_layers):
super().__init__()
self.embed = Encoder(num_embeddings, embedding_dim, num_layers)
self.share_block = nn.Sequential(
# nn.BatchNorm1d(input_dim),
nn.Linear(input_dim, hidden_dim),
nn.ReLU(),
nn.Linear(hidden_dim, hidden_dim),
nn.ReLU(),
)
self.head = nn.Sequential(
nn.Dropout(p=0.1),
nn.Linear(hidden_dim, int(hidden_dim / 2)),
nn.ReLU(),
nn.Dropout(p=0.1),
nn.Linear(int(hidden_dim / 2), out_dim),
)
def forward(self, torch_comp, torch_comp_wt):
x = self.embed(torch_comp, torch_comp_wt)
x = self.share_block(x)
_out = self.head(x)
return _out