Ошибка выполнения: размер тензора a (170) должен соответствовать размеру тензора b (1214) в неодноэлементном измерении 1 ⇐ Python
Ошибка выполнения: размер тензора a (170) должен соответствовать размеру тензора b (1214) в неодноэлементном измерении 1
Я пытаюсь использовать преобразователи аудиоспектрограмм для распознавания эмоций, но застрял на этой ошибке. я в замешательстве
[*]что означает ошибка [*]как решить проблему
/usr/local/lib/python3.10/dist-packages/transformers/models/audio_spectrogram_transformer/modeling_audio_spectrogram_transformer.py в forward(self, input_values) 85 distillation_tokens = self.distillation_token.expand(batch_size, -1, -1) 86 вложений = torch.cat((cls_tokens, distillation_tokens, встраивания), dim=1) ---> 87 вложений = встраивания + self.position_embeddings 88 вложений = self.dropout(вложения) 89 Ошибка выполнения: размер тензора a (170) должен соответствовать размеру тензора b (1214) в неодноэлементном измерении 1. Я пытался запустить модель для обучения, и возникла ошибка выходные данные = ast_model(входные данные)
для эпохи в диапазоне (num_epochs): поезд_потеря = 0,0 поезд_коррект = 0 поезд_тотал = 0 # Этап обучения ast_model.train() для пакета в train_loader: входы, метки = партия входы, метки = inputs.to(устройство), labels.to(устройство) оптимизатор.zero_grad() выходные данные = ast_model (входные данные) логиты = выходные данные.логиты # Преобразование этикеток в формат one-hot число_классов = 7 labels_one_hot = torch.zeros((labels.size(0), num_classes), dtype=torch.float32, устройство=устройство) labels_one_hot.scatter_(1, labels.view(-1, 1), 1) потеря = loss_fn (логиты, labels_one_hot) train_loss += loss.item() * labels.size(0) предсказанные_метки = (torch.sigmoid(логиты) >= 0,5).float() train_correct += (predicted_labels == labels_one_hot).all(dim=1).sum().item() train_total += labels.size(0) потеря.назад() оптимизатор.шаг() train_loss /= train_total train_accuracy = train_correct / train_total # Этап проверки ast_model.eval() знач_лосс = 0,0 val_correct = 0 val_total = 0 с torch.no_grad(): для пакета в test_loader: входы, метки = партия входы, метки = inputs.to(устройство), labels.to(устройство) выходные данные = ast_model (входные данные) логиты = выходные данные.логиты число_классов = 7 labels_one_hot = torch.zeros((labels.size(0), num_classes), dtype=torch.float32, устройство=устройство) labels_one_hot.scatter_(1, labels.view(-1, 1), 1) потеря = loss_fn (логиты, labels_one_hot) val_loss += loss.item() * labels.size(0) предсказанные_метки = (torch.sigmoid(логиты) >= 0,5).float() val_correct += (predicted_labels == labels_one_hot).all(dim=1).sum().item() val_total += labels.size(0) val_loss /= val_total val_accuracy = val_correct / val_total print(f"Эпоха {эпоха + 1}/{num_epochs}") print(f"Потеря поезда: {train_loss:.4f} | Точность поезда: {train_accuracy:.4f}") print(f"Потеря проверки: {val_loss:.4f} | Точность проверки: {val_accuracy:.4f}") Распечатать() где моя ast_model
ast_model_name = "MIT/ast-finetuned-audioset-10-10-0.4593" ast_model = AutoModelForAudioClassification.from_pretrained(ast_model_name) мой ввод: факел.Размер([9887, 128, 150]) torch.Size([1094, 128, 150])
Может ли кто-нибудь мне помочь в этом? спасибо
Я пытаюсь использовать преобразователи аудиоспектрограмм для распознавания эмоций, но застрял на этой ошибке. я в замешательстве
[*]что означает ошибка [*]как решить проблему
/usr/local/lib/python3.10/dist-packages/transformers/models/audio_spectrogram_transformer/modeling_audio_spectrogram_transformer.py в forward(self, input_values) 85 distillation_tokens = self.distillation_token.expand(batch_size, -1, -1) 86 вложений = torch.cat((cls_tokens, distillation_tokens, встраивания), dim=1) ---> 87 вложений = встраивания + self.position_embeddings 88 вложений = self.dropout(вложения) 89 Ошибка выполнения: размер тензора a (170) должен соответствовать размеру тензора b (1214) в неодноэлементном измерении 1. Я пытался запустить модель для обучения, и возникла ошибка выходные данные = ast_model(входные данные)
для эпохи в диапазоне (num_epochs): поезд_потеря = 0,0 поезд_коррект = 0 поезд_тотал = 0 # Этап обучения ast_model.train() для пакета в train_loader: входы, метки = партия входы, метки = inputs.to(устройство), labels.to(устройство) оптимизатор.zero_grad() выходные данные = ast_model (входные данные) логиты = выходные данные.логиты # Преобразование этикеток в формат one-hot число_классов = 7 labels_one_hot = torch.zeros((labels.size(0), num_classes), dtype=torch.float32, устройство=устройство) labels_one_hot.scatter_(1, labels.view(-1, 1), 1) потеря = loss_fn (логиты, labels_one_hot) train_loss += loss.item() * labels.size(0) предсказанные_метки = (torch.sigmoid(логиты) >= 0,5).float() train_correct += (predicted_labels == labels_one_hot).all(dim=1).sum().item() train_total += labels.size(0) потеря.назад() оптимизатор.шаг() train_loss /= train_total train_accuracy = train_correct / train_total # Этап проверки ast_model.eval() знач_лосс = 0,0 val_correct = 0 val_total = 0 с torch.no_grad(): для пакета в test_loader: входы, метки = партия входы, метки = inputs.to(устройство), labels.to(устройство) выходные данные = ast_model (входные данные) логиты = выходные данные.логиты число_классов = 7 labels_one_hot = torch.zeros((labels.size(0), num_classes), dtype=torch.float32, устройство=устройство) labels_one_hot.scatter_(1, labels.view(-1, 1), 1) потеря = loss_fn (логиты, labels_one_hot) val_loss += loss.item() * labels.size(0) предсказанные_метки = (torch.sigmoid(логиты) >= 0,5).float() val_correct += (predicted_labels == labels_one_hot).all(dim=1).sum().item() val_total += labels.size(0) val_loss /= val_total val_accuracy = val_correct / val_total print(f"Эпоха {эпоха + 1}/{num_epochs}") print(f"Потеря поезда: {train_loss:.4f} | Точность поезда: {train_accuracy:.4f}") print(f"Потеря проверки: {val_loss:.4f} | Точность проверки: {val_accuracy:.4f}") Распечатать() где моя ast_model
ast_model_name = "MIT/ast-finetuned-audioset-10-10-0.4593" ast_model = AutoModelForAudioClassification.from_pretrained(ast_model_name) мой ввод: факел.Размер([9887, 128, 150]) torch.Size([1094, 128, 150])
Может ли кто-нибудь мне помочь в этом? спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение