使用权重和偏差存储不同体系结构的pytorch实验

ve7v8dk2  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(188)

在基本的pytorch tutorial之后,我尝试使用不同的CNN架构(不同的层数、每层的通道数等),我希望组织起来,所以我尝试使用wandb
我正在寻找一种简单的方法来尝试不同的体系结构,并保存两种结果(准确性)。目前我拥有的是一个代码片段,它允许我保存模型及其权重,但我还需要一种方法来重现我的结果,包括重现我的类的代码(我可以,使用repr(model)保存模型参数,但不是类本身的代码,这是不幸的)。
有没有更好的方法来管理我的实验,并轻松地复制我的结果,包括类的代码?我考虑使用inspect模块来保存源代码,但我都不确定这是最好的方法,谷歌colab不支持这个模块。
这是我目前拥有的代码:

torch.manual_seed(0)

# MODEL DESCRIPTION
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = torch.flatten(x, 1) # flatten all dimensions except batch
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

model = Net()
model_desc = repr(model)

# TRAINING....

# EVALUATING...
accureacy = ...

# SAVE RESULTS
run = wandb.init(project='test-project', name=model_desc)

artifact = wandb.Artifact('model', type='model')
artifact.add_file(MODEL_PATH)

# 2. Save mode inputs and hyperparameters
config = run.config
config.test_number = 1
config.model_desc = model_desc

# 3. Log metrics over time to visualize performance
run.log({"accuracy": accuracy})

# 4. Log an artifact to W&B
run.log_artifact(artifact)
run.finish()
v8wbuo2f

v8wbuo2f1#

Scott来自W&B这里。我们有一个新的特性叫做Launch,你可以用run.log_code()记录你的代码,然后通过UI启动它。

  • https://wandb.ai/settings中打开并更新wandb
  • 使用run.log_code()记录代码并在“Jobs”选项卡中查看
  • 使用启动UI创建队列
  • 运行wandb launch-agent -q <queue-name>
  • 现在,您可以将作业发送到该队列

https://docs.wandb.ai/guides/launch

相关问题