Python zeigt mir leider ständig "No module named 'torchvision'" an. Ich habe torchvision aber ganz sicher installiert (mit pip....), von daher muss der Fehler woanders liegen. Fragt sich nur wo.... Hat jemand eine Idee?
Hier der Code inklusive Fehlermeldung:
Code: Alles auswählen
import torch
import torchvision
from torchvision import transforms
from PIL import Image
from os import listdir
import random
import torch.optim as optim
from torch.autograd import Variable
import torch.nn.functional
import torch.nn as nn
transforms.Normalize(mean = [ 0.485, 0.456, 0.406 ],
std = [ 0.229, 0.224, 0.225 ]),
transform = transforms.Compose([transforms.Resize(256), transforms.CenterCrop(256), transforms.ToTensor(256),
normalize])
#Target [isCat, isDog]
traning_data_list = []
target_list = []
train_data = []
files = listdir('iCloudDrive/Dokumente/Python/CatDogTrain/train')
for i in range(len(listdir('iCloudDrive/Dokumente/Python/CatDogTrain/train'))):
f = random.choice(files)
files.remove(f)
img = Image.open("iCloudDrive/Dokumente/Python/CatDogTrain/train" + f)
img_tensor = transform(img)
train_data_list.append(img_tensor)
isCat = 1 if 'cat' in f else 0
isDog = 1 if 'dog' in f else 0
target = [isCat, isDog]
target_list.append(target)
if len(train_data_list) >= 64:
train_data.append((torch.stack(train_data_list), target_list))
train_data_list = []
class Netz(nn.Module):
def __init__(self):
super(Netz, self).__init__()
self.conv1 = nn.Conv2d(3, 6, kernel_size=5)
self.conv2 = nn.Conv2d(6, 12, kernel_size=5)
self.conv3 = nn.Conv2d(12, 18, kernel_size=5)
self.conv4 = nn.Conv2d(18, 24, kernel_size=5)
self.fc1 = nn.Linear(3456, 1000)
self.fc2 = nn.Linear(1000, 2)
def forward(self, x):
x = self.conv1(x)
x = F.max_pool2d(x,2)
x = F.relu(x)
x = self.conv2(x)
x = F.max_pool2d(x,2)
x = F.relu(x)
x = self.conv3(x)
x = F.max_pool2d(x,2)
x = F.relu(x)
x = x.view(-1, 14112)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return F.sigmoid(x)
model = Netz()
optimizer = optim.Adam(model.parameters(), lr=0.01)
def train(epoch):
model.train()
batch_id = 0
for data, target in train_data:
target = torch.Tensor(target)
data = Variable(data)
target = Variable(target)
optimizer.zero_grad()
out = model(data)
criterion = F.binary_cross_entropy
loss = criterion(out, target)
loss.backward()
optimizer.step()
print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
epoch, batch_id * len(data), len(train_data),
100. * batch_id / len(train_data), loss.data[0]))
batch_id = batch_id + 1
def test():
model.eval()
files = listdir('catdog/test/')
f = random.choice(files)
img = Image.open('catdog/test/' + f)
img_eval_tensor = transforms(img)
img_eval_tensor.unsqueeze_(0)
data = Variable()
out = model(data)
print(out.data.max(1, keepdim=true)[1])
img.show()
x = input('')
for epoch in range(1,30):
train(epoch)
test()
Code: Alles auswählen
Traceback (most recent call last):
File "testnr4.py", line 2, in <module>
import torchvision
ModuleNotFoundError: No module named 'torchvision'