From 9c8f12e43197d777c921a27488332404151f0793 Mon Sep 17 00:00:00 2001 From: kejingfan Date: Tue, 10 Oct 2023 19:11:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=89=8B=E5=8A=A8softmax?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=AE=AD=E7=BB=83=E6=A2=AF=E5=BA=A6=E7=88=86?= =?UTF-8?q?=E7=82=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab1/code/2.1.py | 10 +++++++--- Lab1/code/2.2.py | 14 +++++++++----- Lab1/code/3.1.py | 15 +++++++-------- Lab1/code/3.2.py | 20 ++++++++++---------- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/Lab1/code/2.1.py b/Lab1/code/2.1.py index 7b10711..560ca53 100644 --- a/Lab1/code/2.1.py +++ b/Lab1/code/2.1.py @@ -53,7 +53,7 @@ class My_Linear: return self.params -class Model: +class Model_2_1: def __init__(self): self.linear = My_Linear(1, 1) self.params = self.linear.params @@ -102,10 +102,14 @@ device = "cuda:0" if torch.cuda.is_available() else "cpu" dataset = My_Dataset() dataloader = DataLoader( - dataset=dataset, batch_size=batch_size, shuffle=True, num_workers=5, pin_memory=True + dataset=dataset, + batch_size=batch_size, + shuffle=True, + num_workers=14, + pin_memory=True, ) -model = Model().to(device) +model = Model_2_1().to(device) criterion = My_BCELoss() optimizer = My_optimizer(model.parameters(), lr=learning_rate) diff --git a/Lab1/code/2.2.py b/Lab1/code/2.2.py index 1015a09..1c92a0b 100644 --- a/Lab1/code/2.2.py +++ b/Lab1/code/2.2.py @@ -7,9 +7,9 @@ from tqdm import tqdm import ipdb -class Model(nn.Module): +class Model_2_2(nn.Module): def __init__(self): - super(Model, self).__init__() + super(Model_2_2, self).__init__() self.linear = nn.Linear(1, 1, dtype=torch.float64) def forward(self, x): @@ -38,17 +38,21 @@ class My_Dataset(Dataset): return x, y -learning_rate = 1e-2 +learning_rate = 5e-2 num_epochs = 10 batch_size = 1024 device = "cuda:0" if torch.cuda.is_available() else "cpu" dataset = My_Dataset() dataloader = DataLoader( - dataset=dataset, batch_size=batch_size, shuffle=True, num_workers=5, pin_memory=True + dataset=dataset, + batch_size=batch_size, + shuffle=True, + num_workers=14, + pin_memory=True, ) -model = Model().to(device) +model = Model_2_2().to(device) criterion = nn.BCELoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) diff --git a/Lab1/code/3.1.py b/Lab1/code/3.1.py index 6dd8b47..9dfcab8 100644 --- a/Lab1/code/3.1.py +++ b/Lab1/code/3.1.py @@ -27,7 +27,7 @@ class My_CrossEntropyLoss: class My_optimizer: def __init__(self, params: list[torch.Tensor], lr: float): - self.params = params + self.params = list(params) self.lr = lr def step(self): @@ -96,7 +96,7 @@ class Model_3_1: return self.params -learning_rate = 5e-3 +learning_rate = 5e-1 num_epochs = 10 batch_size = 4096 num_classes = 10 @@ -105,27 +105,27 @@ device = "cuda:0" if torch.cuda.is_available() else "cpu" transform = transforms.Compose( [ transforms.ToTensor(), - transforms.Normalize((0.5,), (0.5,)), + transforms.Normalize((0.5,), (1.0,)), ] ) train_dataset = datasets.FashionMNIST( - root="./dataset", train=True, transform=transform, download=True + root="../dataset", train=True, transform=transform, download=True ) test_dataset = datasets.FashionMNIST( - root="./dataset", train=False, transform=transform, download=True + root="../dataset", train=False, transform=transform, download=True ) train_loader = DataLoader( dataset=train_dataset, batch_size=batch_size, shuffle=True, - num_workers=4, + num_workers=14, pin_memory=True, ) test_loader = DataLoader( dataset=test_dataset, batch_size=batch_size, shuffle=True, - num_workers=4, + num_workers=14, pin_memory=True, ) @@ -148,7 +148,6 @@ for epoch in range(num_epochs): ) outputs = model(images) - # ipdb.set_trace() loss = criterion(outputs, one_hot_targets) total_epoch_loss += loss diff --git a/Lab1/code/3.2.py b/Lab1/code/3.2.py index 8624929..c2ffa1e 100644 --- a/Lab1/code/3.2.py +++ b/Lab1/code/3.2.py @@ -8,9 +8,9 @@ from torch.utils.data import DataLoader import ipdb -class Model(nn.Module): +class Model_3_2(nn.Module): def __init__(self, num_classes): - super(Model, self).__init__() + super(Model_3_2, self).__init__() self.flatten = nn.Flatten() self.linear = nn.Linear(28 * 28, num_classes) @@ -20,7 +20,7 @@ class Model(nn.Module): return x -learning_rate = 5e-3 +learning_rate = 5e-2 num_epochs = 10 batch_size = 4096 num_classes = 10 @@ -29,33 +29,33 @@ device = "cuda:0" if torch.cuda.is_available() else "cpu" transform = transforms.Compose( [ transforms.ToTensor(), - transforms.Normalize((0.5,), (0.5,)), + transforms.Normalize((0.5,), (1.0,)), ] ) train_dataset = datasets.FashionMNIST( - root="./dataset", train=True, transform=transform, download=True + root="../dataset", train=True, transform=transform, download=True ) test_dataset = datasets.FashionMNIST( - root="./dataset", train=False, transform=transform, download=True + root="../dataset", train=False, transform=transform, download=True ) train_loader = DataLoader( dataset=train_dataset, batch_size=batch_size, shuffle=True, - num_workers=4, + num_workers=14, pin_memory=True, ) test_loader = DataLoader( dataset=test_dataset, batch_size=batch_size, shuffle=True, - num_workers=4, + num_workers=14, pin_memory=True, ) -model = Model(num_classes).to(device) +model = Model_3_2(num_classes).to(device) criterion = nn.CrossEntropyLoss() -optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) +optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) for epoch in range(num_epochs): total_epoch_loss = 0