У меня проблема, когда я хочу, чтобы l oop мой DataFrame
был создан ранее, чтобы я мог передать его в свой классификатор, но я не могу ни l oop my DataFrame
, ни передать имя файла в классификатор. Что я могу сделать?
dataset=pd.DataFrame({
'filename':train,
'category':categories
})
images=dataset.iloc[:,0]
labels=dataset.iloc[:,-1]
from torch import nn,optim
class Classifier(nn.Module):
def __init__(self):
super().__init__()
self.fc1=nn.Linear(49152,256)
self.fc2=nn.Linear(256,128)
self.fc3=nn.Linear(128,64)
self.fc4=nn.Linear(64,2)
# add the dropout
self.dropout=nn.Dropout(p=0.2)
def forward(self,x):
#flatten the input
x=x.view(x.shape[0],-1)
x=self.dropout(F.relu(self.fc1(x)))
x=self.dropout(F.relu(self.fc2(x)))
x=self.dropout(F.relu(self.fc3(x)))
x=F.log_softmax(self.fc4(x),dim=1)
return x
model=Classifier()
criterion=nn.NLLLoss()
optimizer=optim.Adam(model.parameters(),lr=0.005)
epochs=20
steps=0
for epoch in range(epochs):
running_loss=0
for filename,label in dataset:
image=cv2.imread(filename)
image=cv2.resize(image,dsize=(128,128),interpolation=cv2.INTER_CUBIC)
output=model.forward(image)
loss=criterion(output,label)
optimizer.zero_grad()
loss.backward()
optimizer.step()
running_loss+=loss.item()
print(running_loss)