Я пытаюсь написать учебный сценарий, но сталкиваюсь с ошибкой во время выполнения, которая не может пройти мимо. Я понимаю, что тензоры X_weighted и Xf имеют размер 5359x5359, но у меня никогда не было этой проблемы с тренировочными наборами до этого.
Я пытался изменить форму и использовать .view, но это не сработало. Я сделал это в самом тренировочном наборе, что может быть проблемой, но я не знаю, где иначе это сделать. Размерность вектора, равная 30, является обязательным условием для этого задания.
def loss_fn(X_weighted: FloatTensor, W: FloatTensor, W_context: FloatTensor, B: FloatTensor, B_context: FloatTensor, X: FloatTensor) -> FloatTensor:
J = X @ ((W * W_context.t()+ B + B_context.t() - math.log(X)) **2)
return J
def forward(self, X_weighted: FloatTensor, X: FloatTensor) -> FloatTensor:
embedding_input = torch.arange(self.vocab_len).to(self.device)
w = self.w(embedding_input)
wc = self.wc(embedding_input)
b = self.wc(embedding_input)
bc = self.wc(embedding_input)
loss = loss_fn(X_weighted, w, wc, b, bc, X)
return loss
print(w.shape)
num_epochs = 300
for i in range(num_epochs):
loss = network.forward(X_weighted, Xf) # compute loss
loss.backward() # backward
opt.step() # optimizer step
opt.zero_grad() # zero grads
RuntimeError Traceback (most recent call last)
<ipython-input-169-4ee915a1483b> in <module>()
2
3 for i in range(num_epochs):
----> 4 loss = network.forward(X_weighted, Xf) # compute loss
5 loss.backward() # backward
6 opt.step() # optimizer step
<ipython-input-165-f6a37d945377> in forward(self, X_weighted, X)
15 b = self.wc(embedding_input)
16 bc = self.wc(embedding_input)
---> 17 loss = loss_fn(X_weighted, w, wc, b, bc, X)
18 return loss
19 print(w.shape)
<ipython-input-155-0783c47cd8df> in loss_fn(X_weighted, W, W_context, B, B_context, X)
2 B: FloatTensor, B_context: FloatTensor,
3 X: FloatTensor) -> FloatTensor:
----> 4 J = X @ ((W * W_context.t()+ B + B_context.t() - math.log(X)) **2)
5 return J
6
RuntimeError: The size of tensor a (30) must match the size of tensor b (5359) at non-singleton dimension 1
Я ожидаю, что тренировочный набор начнет обучение в основном, что сейчас прерывается.