Я работаю над моделью классификации изображений для набора данных FashionMNIST, и когда я обучаю модель путем перечисления через загрузчик поездов, я получаю следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
7
8 running_loss = 0.0
----> 9 for i, data in enumerate(trainloader, 0):
10 # get the inputs; data is a list of [inputs, labels]
11 inputs, labels = data
3 frames
/usr/local/lib/python3.10/dist-packages/torch/_utils.py in reraise(self)
703 # instantiate since we don't know how to
704 raise RuntimeError(msg) from None
--> 705 raise exception
706
707
TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/worker.py", line 308, in _worker_loop
data = fetcher.fetch(index) # type: ignore[possibly-undefined]
File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py", line 51, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py", line 51, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.10/dist-packages/torchvision/datasets/mnist.py", line 146, in __getitem__
img = self.transform(img)
TypeError: 'module' object is not callable
Я работаю над блокнотами Google, если это имеет какое-то значение. Вот остальная часть кода:
import matplotlib.pyplot as plt # for plotting
import numpy as np # for transformation
import torch # PyTorch package
import torchvision # load datasets
import torchvision.transforms as transforms # transform data
from torchvision.transforms import v2
import torch.nn as nn # basic building block for neural neteorks
import torch.nn.functional as F # import convolution functions like Relu
import torch.optim as optim # optimzer
# python image libary of range [0, 1]
#transform them to tensors of normalized range[-1, 1]
transform = transforms.Compose( # composing several transforms together
[transforms.ToTensor(), # to tensor object
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5 ,0.5))]) # mean = 0.5, std = 0.5
# set batch_size
batch_size = 4
# set numbers of workers
num_workers = 2
# load train data
trainset = torchvision.datasets.FashionMNIST(root="./data", train=True,
download=True, transform=transforms)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
shuffle=True, num_workers=num_workers)
# load test data
testset = torchvision.datasets.FashionMNIST(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
shuffle=False, num_workers=num_workers)
classes = ('T-shirt/top', 'Trouser', 'Pullover,' 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot')
class Net(nn.Module):
''' Models a simple Convolutional Neural Network'''
def __init__(self):
''' initialize the network '''
super(Net, self).__init__()
# 3 input image channel, 6 output channels,
# 5x5 square convolution kernel
self.conv1 = nn.Conv2d(3, 6, 5)
# Max pooling over a (2, 2) window
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)# 5x5 from image dimension
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
''' the forward propagation algorithm '''
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
print(net)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
start = torch.cuda.Event(enable_timing=True)
end = torch.cuda.Event(enable_timing=True)
start.record()
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
# whatever you are timing goes here
end.record()
# Waits for everything to finish running
torch.cuda.synchronize()
print('Finished Training')
print(start.elapsed_time(end)) # milliseconds
Я исследовал ошибку и знаю, что она связана с использованием функций из импорта моделей, но ни одно из найденных мной решений не работает легко с моей ошибкой, тем более что не многим пришлось это делать. с этим конкретным сценарием. Я ожидаю, что он будет работать нормально, так как для основы кода я использую код из руководства, и какое-то время он работал, пока внезапно не перестал работать, хотя я пытался скопировать код заново, и ничего не произошло.
Я работаю над моделью классификации изображений для набора данных FashionMNIST, и когда я обучаю модель путем перечисления через загрузчик поездов, я получаю следующую ошибку: [code]--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in () 7 8 running_loss = 0.0 ----> 9 for i, data in enumerate(trainloader, 0): 10 # get the inputs; data is a list of [inputs, labels] 11 inputs, labels = data
3 frames /usr/local/lib/python3.10/dist-packages/torch/_utils.py in reraise(self) 703 # instantiate since we don't know how to 704 raise RuntimeError(msg) from None --> 705 raise exception 706 707
TypeError: Caught TypeError in DataLoader worker process 0. Original Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/worker.py", line 308, in _worker_loop data = fetcher.fetch(index) # type: ignore[possibly-undefined] File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py", line 51, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.10/dist-packages/torch/utils/data/_utils/fetch.py", line 51, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.10/dist-packages/torchvision/datasets/mnist.py", line 146, in __getitem__ img = self.transform(img) TypeError: 'module' object is not callable [/code] Я работаю над блокнотами Google, если это имеет какое-то значение. Вот остальная часть кода: [code]import matplotlib.pyplot as plt # for plotting import numpy as np # for transformation
import torch # PyTorch package import torchvision # load datasets import torchvision.transforms as transforms # transform data from torchvision.transforms import v2 import torch.nn as nn # basic building block for neural neteorks import torch.nn.functional as F # import convolution functions like Relu import torch.optim as optim # optimzer
# python image libary of range [0, 1] #transform them to tensors of normalized range[-1, 1]
transform = transforms.Compose( # composing several transforms together [transforms.ToTensor(), # to tensor object transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5 ,0.5))]) # mean = 0.5, std = 0.5
def forward(self, x): ''' the forward propagation algorithm ''' x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = x.view(-1, 16 * 5 * 5) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x
# print statistics running_loss += loss.item() if i % 2000 == 1999: # print every 2000 mini-batches print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0
# whatever you are timing goes here end.record()
# Waits for everything to finish running torch.cuda.synchronize()
print('Finished Training') print(start.elapsed_time(end)) # milliseconds [/code] Я исследовал ошибку и знаю, что она связана с использованием функций из импорта моделей, но ни одно из найденных мной решений не работает легко с моей ошибкой, тем более что не многим пришлось это делать. с этим конкретным сценарием. Я ожидаю, что он будет работать нормально, так как для основы кода я использую код из руководства, и какое-то время он работал, пока внезапно не перестал работать, хотя я пытался скопировать код заново, и ничего не произошло.
Я новичок в langchain и использую langchain-0.2.12 langchain-core-0.2.28 в своем Spyder 4.1.4.
Пока я пишу из langchain.llms import, я не вижу OpenAI, вместо этого я вижу openai. Итак, мой оператор импорта взят из langchain.llms import openai. Но...
У меня есть набор данных классификации изображений с 6 категориями, который я загружаю с помощью класса torchvision ImageFolder. Я написал ниже, чтобы разделить набор данных на 3 набора послойно:
from torch.utils.data import Subset
from...