Вот код преобразователя зрения, который я создал с помощью Pytorch. Модель показывает перекрестную энтропию 2,31 и точность около 10%. Это остается неизменным во все эпохи. Следовательно, модель не может обучаться. Пожалуйста, дайте мне знать, что я делаю неправильно, и, если возможно, пришлите исправленный код. Заранее спасибо!
PS: Модель обучена на MNIST
Вот код преобразователя зрения, который я создал с помощью Pytorch. Модель показывает перекрестную энтропию 2,31 и точность около 10%. Это остается неизменным во все эпохи. Следовательно, модель не может обучаться. Пожалуйста, дайте мне знать, что я делаю неправильно, и, если возможно, пришлите исправленный код. Заранее спасибо! PS: Модель обучена на MNIST [code]# -*- coding: utf-8 -*- """ Created on Sun Jul 2 14:04:19 2023
@author: Paras """
import torch from torch import nn from torchvision import transforms import torchvision.datasets as datasets import torch.nn.functional as F import torch.optim as optim import numpy as np import math
out = torch.matmul(self.Q,self.K) out = out/np.sqrt(self.Q.shape[1]) out = F.softmax(out,dim=-1) out = torch.matmul(out,self.V) return out
class MHA(nn.Module): def __init__(self,num_heads,weight_dimension): super(MHA, self).__init__() self.num_heads = num_heads self.weight_dimension = weight_dimension heads = [] for i in range(self.num_heads): head = Head(self.num_heads,self.weight_dimension) heads.append(head)
self.heads = heads
def forward(self,x):
flag=True for i in range(self.num_heads): if flag: out_multihead = self.heads[i](x) flag=False else: out_multihead = torch.cat((out_multihead,self.heads[i](x)),axis=2)
self.added_class_head = nn.Parameter(torch.randn((1,embedding_cols))) #Normally distributed like nn.init.normal_ (std 10-6) self.added_class_head.requires_grad_(True)
self.positional_embeddings = nn.Parameter(self.get_positional_encodings((img_size//patch_size)**2,embedding_cols)) #Trunc Normal distribution self.positional_embeddings.requires_grad_(True)
flag = True for startx in range(0,height,patch_size): for starty in range(0,width,patch_size): tmat = imgs[:,:,startx:startx+patch_size,starty:starty+patch_size]
out = self.divide_image_into_patches(images,self.patch_size) out = torch.matmul(out,self.embedding_matrix) out = out + self.positional_embeddings.unsqueeze(0).expand(self.batch_size, -1, -1) out = torch.cat((out,self.added_class_head.expand(self.batch_size, 1, -1)),1) out = out.to(self.device) ln = nn.LayerNorm(out.size()[1:]).to(self.device) out = ln(out) layer_norm1 = out.clone() out = self.mha(out) out = out + layer_norm1 skip = out.clone() out = out.to(self.device) ln = nn.LayerNorm(out.size()[1:]).to(self.device) out = ln(out) out = self.mlp_inside_encoder(out.reshape(out.shape[0],out.shape[1]*out.shape[2])) out = skip + out.reshape(self.batch_size,layer_norm1.shape[1],self.embedding_dim) out = out[:,-1,:] out = self.mlp_classification(out) return out
# Define the transform to normalize the data transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
# Load the training and test datasets train_dataset = datasets.MNIST(root='./data', train=True, transform=transform) test_dataset = datasets.MNIST(root='./data', train=False, transform=transform)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
torch.autograd.set_detect_anomaly(True) model = vit_model(28, 4, 512, 8, 2048, 10, 1000) model = model.to(device) print(model) #num_params = sum(p.numel() for p in model.named_parameters()) for p in model.named_parameters(): print(p) #print('Number of parameters:',num_params) criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01)
epoch_losses = [] epoch_accuracies = [] for epoch in range(100): # Number of training epochs
epoch_loss = [] epoch_acc = [] model.train() for i, (images,labels) in enumerate(train_loader): images = images.to(device) labels = labels.to(device) c = model(images) loss = criterion(c,labels)
with torch.no_grad(): predictions = torch.argmax(c, dim=-1)
Вот код преобразователя зрения, который я создал с помощью Pytorch. Модель показывает перекрестную энтропию 2,31 и точность около 10%. Это остается неизменным во все эпохи. Следовательно, модель не может обучаться. Пожалуйста, дайте мне знать, что я...
Я создаю модель классификации видео, используя данные изображения, текста и аудио, но после того, как я создал свои данные, я попытался обучить их, но модель Cnn показывает ошибку ниже.
# Извлечение функций из аудио импортировать Moviepy.editor...
Я настраивал своего агента RL для обучения на графическом процессоре, а не на процессоре обычным способом...
Но мой GeForce RTX 3060 использует 1%, когда я запускаю 4 экземпляра моего агента. Это игра с картой и игроком, который должен собирать очки...
Я настраивал своего агента RL для обучения на графическом процессоре, а не на процессоре обычным способом...
Но мой GeForce RTX 3060 использует 1%, когда я запускаю 4 экземпляра моего агента. Это игра с картой и игроком, который должен собирать очки...